[“1”,“2”,“3”].map(parseInt)
what&why?
早在2013年,有人在微博上发布以下代码段:
['10','10','10','10','10'].map(parseInt)
//[10,NaN,2,3,4]
parseInt(取整)
定义和用法
parseInt()函数解析一个字符串参数,并返回一个指定基数的整数(数学系统的基础)。
语法
parseInt(string,radix)
string:必需。要被解析的字符串;
radix:可选。表示要解析的数字的基数。该值介于2~36之间。如果省略该参数或其值为0,则数字将以10为基础来解析。如果它以“0x”或“0X开头”,将以16为基数。如果该参数小于2或者大于36,则parseInt()将返回NaN。
返回值
返回解析后的数字。
const round = parseInt(100)
console.log(round)
const round = parseInt(100,10)
console.log(round)
const round = parseInt(100,2)
console.log(round)
map(遍历)
map()方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
let new_array = arr.map(function callback(currentValue,index,array){}[,thisArg])
其中callback生成新数组元素的函数,使用三个参数:
currentValue callback的第一个参数,数组中正在处理的当前元素。
index callback的第二个参数,数组中正在处理的当前元素的索引。
array callback的第三个参数,map方法被调用的数组。
thisArg 可选的,执行callback函数时 使用的this值。
<script>
const arr = [1,2,3];
const arr2 = arr.map(function(num){ return num+1})
console.log(arr2)
</script>
回到真实的事例上
['1','2','3'].map(parseInt)
对于每个迭代map,parseInt()传递两个参数:字符串和基数。所以实际执行的代码是:
<script>
const arr = [1,2,3];
const arr2 = arr.map(function(item,index){ return parseInt(item,index)})
console.log(arr2)
</script>
如何在现实世界中做到这一点
如果您实际上想要循环访问字符串数组,带怎么办?map()然后把它换成数字?使用编号!
<script>
const arr = [1,2,3];
const arr2 = arr.map(function(Number){ return parseInt(Number)})
console.log(arr2)
</script>