像map()这样的函数不会创建新数组

时间:2016-08-04 20:04:27

标签: javascript

JS中是否有类似map()的函数将返回值存储在原始数组中,而不是创建新数组?如果没有,那么最有效的方法是什么?

1 个答案:

答案 0 :(得分:6)

只需使用.forEach()代替:

myArray.forEach(function(value, index, array) {
    array[index] = ...   // some mutation of value
});

完全相同的代码仍然适用于.map(它使用相同的三个参数调用回调,因此允许就地突变)但.forEach避免了创建新数组的开销,仅把它立刻扔掉。

另请注意,虽然一个 只能在回调中引用myArray,但它的效率要高得多。将array参数传递给回调允许回调操作或访问原始数组,而不要求它在词法范围内(尽管使用它来插入或删除元素是不明智的)