例子。
var arr = ["one","two","three"];
arr.forEach(function(part){
part = "four";
return "four";
})
alert(arr);
数组仍然是它的原始值,有什么办法可以从迭代函数中对数组元素进行写入访问?
回调被传递给元素、索引和数组本身。
arr.forEach(function(part, index, theArray) {
theArray[index] = "hello world";
});
edit - 正如评论中指出的,.forEach()
函数可以接受第二个参数,这个参数将在每次调用回调时作为this
的值使用。
arr.forEach(function(part, index) {
this[index] = "hello world";
}, arr); // use arr as this
第二个例子显示arr
本身在回调中被设置为this
。人们可能会认为.forEach()
调用中涉及的数组可能是this
的*默认值,但不管是什么原因,它不是;如果不提供第二个参数,this
将被undefined
。
此外,重要的是要记住,在Array原型上有一整套类似的工具,Stackoverflow上有许多关于这个或那个函数的问题,最好的解决办法是简单地选择一个不同的工具。你已经有了。
forEach
用于对数组中的每个条目进行处理。filter
用于产生一个只包含合格条目的新数组。map
用于通过转换现有数组来生成一个一对一的新数组。some
检查数组中是否至少有一个元素符合某种描述。every
检查一个数组中的*所有条目是否符合描述。find
在一个数组中寻找一个值等等。MDN链接