Appearance
'1', '2', '3'.map(parseInt)
本节目标:理解“'1', '2', '3'.map(parseInt)”的核心思路,并能把它用于实际开发或面试表达。
==parseInt==
==parseInt()== ==函数解析一个字符串参数,并返回一个指定基数的整数== ==(====数学系统的基础====)====。==
==const== ==intValue== ===== ==parseInt====(string[, radix]);==
==string== ==要被解析的值。如果参数不是一个字符串,则将其转换为字符串====(====使用== ==ToString== ==抽象操作====)====。字符串开头的空白符将会被忽略。====radix== ==一个介于====2====和====36====之间的整数====(====数学系统的基础====)====,表示上述字符串的基数。默认为====10====。== 注意: ==在====radix==
==没有指定====或为====0====、====undefined====、====null====、====''====、====NaN====、====false====等假值时:====JavaScript== ==作如下处理:====如果字符串== ==string== ==以===="0x"====或者===="0X"====开头====,== ==则基数是====16 (16====进制====).====如果字符串== ==string== ==以===="0"====开头====,== ==基数是====8====(八进制)或者====10====(十进制),那么具体是哪个基数由实现环境决定。====ECMAScript 5== ==规定使用====10====,但是并不是所有的浏览器都遵循这个规定。因此,永远都要明确给出====radix====参数的值。==
==如果字符串== ==string== ==以其它任何值开头,则基数是====10 (====十进制====)====。====在====radix====不是介于====2====和====36====之间的整数,但是一个真值是,转换不能完成,返回====NaN==
==返回值== ==返回一个====10====进制====的整数或====NaN====parseInt====(====100====); // 100========parseInt====(====100====,== ==10====); // 100========parseInt====(====100====,== ==2====); // 4 -> converts 100 in base 2 to base 10==
==算术上,== ==NaN== ==不是任何一个进制下的数。== ==你可以调用====isNaN== ==来判断== ==parseInt== ==是否返回== ==NaN====。====NaN== ==参与的数学运算其结果总是== ==NaN====。==
==将整型数值以特定基数转换成它的字符串值可以使用== ==intValue.toString(radix).==
**map**
==map()== ==方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。==
==var== ==new_array== ===== ==arr.====map====(====function== ==callback====(currentValue[,index[, array]]) {====== ==// Return element for new_array====== ==}[, thisArg])======
==可以看到====callback====回调函数需要三个参数====,== ==我们通常只使用第一个参数== ==(====其他两个参数是可选的====)====。== ==currentValue== ==是====callback== ==数组中正在处理的当前元素。== ==index====可选====,== ==是====callback== ==数组中正在处理的当前元素的索引。== ==array====可选====,== ==是====callback map== ==方法被调用的数组。====另外还有====thisArg====可选====,== ==执行== ==callback== ==函数时使用的====this== ==值。==
==const== ==arr== ===== ==[====1====,== ==2====,== ==3====];========arr.====map====((num)== ===>== ==num== ==+== ==1====); // [2, 3, 4]======
==更多详见====Array.prototype.map() | MDN====回到题目==
==[===='1'====,== =='2'====,== =='3'====].====map====(parseInt)======
==对于每个迭代====map====,== ==parseInt()====传递两个参数====:== ==字符串和基数====。== ==所以实际执行的的代码是:==
==[===='1'====,== =='2'====,== =='3'====].====map====((item, index)== ===>== =={====== ==return== ==parseInt====(item, index)========})======
==即返回的值分别为:==
==parseInt====(===='1'====,== ==0====) // 1========parseInt====(===='2'====,== ==1====) // NaN========parseInt====(===='3'====,== ==2====) // NaN, 3== ==不是二进制======
==所以:==
==[===='1'====,== =='2'====,== =='3'====].====map====(parseInt)========// 1, NaN, NaN======
==由此,加里·伯恩哈德例子也就很好解释了,这里不再赘述==
==[===='10'====,===='10'====,===='10'====,===='10'====,===='10'====].====map====(parseInt);========// [10, NaN, 2, 3, 4]==> 来自
<https://muyiy.cn/question/js/2.html>