数组方法-map

2022-07-12  本文已影响0人  skoll

描述

map方法会给原数组中的每个元素按照顺序调用执行一次callback函数,每次执行后的返回值,组成一个新数组

语法

var new_array = arr.map(function callback(currentValue[, index[, array]]) {
 // Return element for new_array 
}[, thisArg])

1 .callback:生成新数组元素的函数,使用三个参数
2 .currentValue:数组正在处理的当前元素
3 .index:正在处理的当前元素的索引
4 .array:map方法调用的数组
5 .thisArg:执行callback函数时引用的this

返回:一个由原数组每个元素执行回调函数的结果组成的新数组

细节

1 .callback只会在有值的索引上被调用,那些从来没有被赋过值或者被delete删除的索引不会被调用。

1 .null,undefined,'',这些都会先做隐式转换,所以这里就不搞了,直接ts解决不好么

2 .map实现的一定是生成一个新数组,如果不打算使用返回的新数组,newArr=arr.map(callback),是违反设计初衷的。

1 .如果想要操作原来的数组,使用forEach,for..of
2 .callback也不允许没有返回值

3 .map不会修改原来的数组,虽然可以在callback的时候修改原来的数组
4 .调用map之后在push的数据是不会被执行到的

使用举例

1 .求一组数的平方根

let newArr=arr.map(Math.sqrt)

2 .对原来的一组数进行格式化处理

var kvArray = [{key: 1, value: 10},
               {key: 2, value: 20},
               {key: 3, value: 30}];

var reformattedArray = kvArray.map(function(obj) {
   var rObj = {};
   rObj[obj.key] = obj.value;
   return rObj;
});

// reformattedArray 数组为: [{1: 10}, {2: 20}, {3: 30}],

// kvArray 数组未被修改:
// [{key: 1, value: 10},
//  {key: 2, value: 20},
//  {key: 3, value: 30}]

3 .最关键的就是用的时候想不起来,for操作的优先级在脑海里面太高了

上一篇 下一篇

猜你喜欢

热点阅读