map
来源:互联网 发布:js集合和数组 编辑:程序博客网 时间:2024/06/14 05:28
语法:
array.map(callback[,thisArg])
arr.map(function(item,index,arr){……})
函数会被自动传入三个参数:数组元素,元素索引,原数组本身。
- map 方法会给远数组中的每个元素都按顺序调用一次 callbak 函数。 - callback 每次执行后的返回值(包括 undefined )组合起来形成一个新数. - callback 函数只会在有值的索引上被调用,那些从来没被赋过值或者使用 delete 删除的索引则不会被调用。
- 如果 thisArg 参数有值,则每次 callback 函数被调用的时候, this 都会指向 thisArg
参数上的这个对象。若省略了 thisArg 参数,或者赋值为 null 或 defined,则 this 指向全局对象。 -
map 不修改调用它的原数组本身(当然可以在 callback 执行时改变原数组)。
- 使用 map 方法处理数组时,数组元素的范围在callback 方法第一次调用之前就已经确定了。在 map 方法执行的过程中:原数组中增加的元素将不会被 callback访问到;若已经存在的元素被改变或者删除,则它们的传递到 callback 的值是map
方法遍历到它们的那一时刻的值;而被删除的元素将不会访问到。 、
面试题:[“1”,”2”,”3”].map(parseInt)
答案 是[1,NaN,NaN]
["1","2","3"].map(parseInt) 相当于 parseInt( '1' , 0); // 进制为0时,变成10进制,所以结果是1parseInt( '2' , 1); //没有1进制,所以结果NaNparseInt( '3' , 2); //2进制里没有3 ,所以结果NaN parseInt有2个参数parseInt(字符串,字符串值代表的进制) parseInt('1',2) 结果就是2 2进制的1 转成10进制