例子:
var arr = ["one","two","three"];
arr.forEach(function(part){
part = "four";
return "four";
})
alert(arr);
数组仍然是它的原始值,有任何方法来写访问数组的元素从迭代函数?
例子:
var arr = ["one","two","three"];
arr.forEach(function(part){
part = "four";
return "four";
})
alert(arr);
数组仍然是它的原始值,有任何方法来写访问数组的元素从迭代函数?
当前回答
foreach函数可以有一个回调函数(eachelement, elementIndex) 所以基本上你需要做的是:
arr.forEach(function(element,index){
arr[index] = "four"; //set the value
});
console.log(arr); //the array has been overwritten.
或者,如果您想保留原始数组,可以在执行上述过程之前对其进行复制。 要制作副本,您可以使用:
var copy = arr.slice();
其他回答
Javascript是按值传递的,这本质上意味着部分是数组中值的副本。
要更改该值,请在循环中访问数组本身。
Arr [index] = '新值';
数组:[1,2,3,4] 结果:["foo1", "foo2", "foo3", "foo4"]
保持原始数组
const originalArr = ["Iron", "Super", "Ant", "Aqua"]; const modifiedArr = originalArr。Map (name => ' ${name}man '); console.log("Original: %s", originalArr); console.log("Modified: %s", modifiedArr);
覆盖原始数组
let originalArr =["铁","超级","蚂蚁","水"]; originalArr = originalArr。Map (name => ' ${name}man '); console.log("Original: %s", originalArr);
重写原始数组
const originalArr = ["Iron", "Super", "Ant", "Aqua"]; originalArr。forEach((name, index) => originalArr[index] = ' ${name}man '); console.log("被覆盖:%s", originalArr);
如果您想删除项目
如果您需要做的更改是完全从列表中删除一个或多个项目,那么使用for循环并向后执行循环会更安全。
for (let i = myArray.length - 1; i >= 0; i--)
{
const item = myArray[i];
if (...)
{
// remove item
// https://stackoverflow.com/questions/5767325/how-can-i-remove-a-specific-item-from-an-array?rq=1
}
};
向后意味着每个项的数组永远不会改变。如果你继续循环并删除项目[3],那么项目[4]现在是新的项目[3],这不会让任何事情变得更容易。你不会让这个问题倒退。
这当然是一个不使用foreach的解决方案,但重要的是要记住,“老派”的方法往往是最好的。如果出于某种原因你需要分手;在循环中(有很多项),for循环更有效,因为不能跳出for循环。
foreach函数可以有一个回调函数(eachelement, elementIndex) 所以基本上你需要做的是:
arr.forEach(function(element,index){
arr[index] = "four"; //set the value
});
console.log(arr); //the array has been overwritten.
或者,如果您想保留原始数组,可以在执行上述过程之前对其进行复制。 要制作副本,您可以使用:
var copy = arr.slice();
将其替换为数组的索引。
array[index] = new_value;