parseInt
Definition and Usage
The parseInt() function parses a string and returns an integer.
The radix parameter is used to specify which numeral system to be used, for example, a radix of 16 (hexadecimal) indicates that the number in the string should be parsed from a hexadecimal number to a decimal number.
If the radix parameter is omitted, JavaScript assumes the following:
• If the string begins with "0x", the radix is 16 (hexadecimal)
• If the string begins with "0", the radix is 8 (octal). This feature is deprecated
• If the string begins with any other value, the radix is 10 (decimal)
Note: Only the first number in the string is returned!
Note: Leading and trailing spaces are allowed.
Note: If the first character cannot be converted to a number, parseInt() returns NaN.
Note: Older browsers will result parseInt("010") as 8, because older versions of ECMAScript, (older than ECMAScript 5, uses the octal radix (8) as default when the string begins with "0". As of ECMAScript 5, the default is the decimal radix (10)).
大体翻译:
定义和用法:
parseInt函数解析字符串并返回一个整数。
第二个参数进制常用来说明根据哪个进制来进行转换,列如可以进行十六进制的转换。
如果第二个参数——进制没有定义,则会按照下面的规则进行转换:
- 如果字符串以0X开头,则按照16进制
- 如果字符串以0开头,则进行8进制转换
- 如果字符串以其他开头,则默认进行10进制转换
提示:
- 只有第一段字符串数字被转换
- 字符串开头和结尾的空格是允许的,转换时被忽略
- 如果开头的第一个字符不能被转换成数字,就会立即返回NaN
- 较早的浏览器会将parseInt(010)按照8进制进行转换
- ECMAScript5之前的语法,0开头会被当作八进制解析,之后默认是10进制解析
Example
Parse different strings:
var a = parseInt("10") + "<br>";
var b = parseInt("10.00") + "<br>";
var c = parseInt("10.33") + "<br>";
var d = parseInt("34 45 66") + "<br>";
var e = parseInt(" 60 ") + "<br>";
var f = parseInt("40 years") + "<br>";
var g = parseInt("He was 40") + "<br>";
var h = parseInt("10",10)+ "<br>";
var i = parseInt("010")+ "<br>";
var j = parseInt("10",8)+ "<br>";
var k = parseInt("0x10")+ "<br>";
var l = parseInt("10",16)+ "<br>";
var n = a + b + c + d + e + f + g + "<br>" + h + i + j + k +l;
The result of n will be:
10
10
10
34
60
40
NaN
10
10
8
16
16
参考资料
Array.prototype.sort
大家都知道,在JS的数组方法中,有一个sort()方法,可以直接调用对数组进行排序。例如:
var arr1=[1,5,8,9,7,2];
arr1.sort();
console.log(arr1);
// 输出: [1,2,5,7,8,9]
在默认情况下,sort()会按照升序排列数组项,需要注意的是sort()方法会改变原来的数组。
sort()方法实现排序的原理:
sort()方法会调用每一个数组项的toString()转型方法,然后比较得到的字符串(字符串的比较规则会在下文中讲到),以决定如何排序。注意即使数组中的每一项都是数字,sort()方法比较的也是字串。
var arr2=[1,15,8,9,7,2];
arr2.sort();
console.log(arr2);
// 输出: [1,15,2,7,8,9]
注意:15明明比2要大,却排在了2的前面,这就是sort()方法调用每一个数组项的toString(),然后比较得到的字符串造成的。
实现理想的的排序:
为了避免上述情况,我们可以向sort()中传入一个比较函数,根据比较函数的返回值决定是升序排列还是降序排列。
比较函数接收两个参数:如果第一个参数应该位于第二个参数之前则返回一个负数,如果两个参数相等,则返回0,否则返回一个正数。
//compare()函数是升序的一种写法:
function compare(value1,value2){
if(value1<value2){
return -1;
}else if(value1==value2){
return 0;
}else{
return 1;
}
}
var arr3=[1,15,8,9,7,2];
arr3.sort(compare);
console.log(arr3);
// 输出: [1,2,7,8,9,15]
对于数值类型或者其valueOf()方法会返回数值类型的对象类型,可以使用一个更简单的比较函数。
//从小到大排列
var arr4=[1, 4, 3];
arr4.sort(function(a, b) {
return a - b;//a<b返回负数,b在a的后面;a>b返回正数,a在b的后面。=》比较大在后面
});
console.log(arr4);
// 输出: [1, 3, 4]
//从大到小排列
var arr5=[1, 4, 3];
arr5.sort(function(a, b) {
return b - a;
});
console.log(arr5);
// 输出: [4, 3, 1]
由于比较函数通过返回一个小于零,等于零或大于零的值来影响排序,因此减法操作就可以适当的处理所有这些情况。
字符串比较规则:
比较的时候,从字符串左边开始,一次比较每个字符,直接出现差异、或者其中一个串结束为止。
比如ABC与ACDE比较,第一个字符相同,继续比较第二个字符,由于第二个字符是后面一个串大,所以不再继续比较,结果就是后面个串大。
再如ABC与ABC123比较,比较三个字符后第一个串结束,所以就是后面一个串大。
所以,长度不能直接决定大小,字符串的大小是由左边开始最前面的字符决定的。
这里比较坑的是笔者竟然对如何通过返回值来实现升序和降序想不明白了,后来经过分析终于理解了。大神们可以自行略过.
思考过程如下。
(1)return a - b;
//a<b返回负数,b在a的后面;a>b返回正数,a在b的后面。=>比较大在后面
(2)return b - a;
//b<a返回负数,a在b的后面;b>a返回正数,b在a的后面。=>比较小在后面
JS运算符优先级
介绍JS所有运算符的优先级和记忆方法
[JS数值]()
==
vs===
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。