以下这段代码中globalArray
和foreachArray
对象之间有什么区别?以及在哪种情况下我们需要使用foreachArray
对象而不是globalArray
?
var globalArray= ['Apple', 'Banana'];
globalArray.forEach(function(item, index, foreachArray) {
console.log(foreachArray);// result is ['Apple', 'Banana'];
console.log(globalArray);// result is ['Apple', 'Banana'];
});
答案 0 :(得分:4)
forEach
函数接受3个Parameters
currentValue
数组中正在处理的当前元素的值。
index
(可选)数组中正在处理的当前元素的索引。
array
(可选)要应用forEach()的数组。
您的问题是最后一个参数如何连接到要迭代的数组,还有为什么要这么做?
该参数实际上是对原始数组的引用
let arrayVar = [0];
arrayVar.forEach((currentValue, index, array) => {
console.log(arrayVar === array)
})
但这为什么有用吗?这样做的三个主要原因是:
引用尚未被保存为变量的数组,如果仅要使用一次数组,可能会派上用场。
[1,2,3,4].forEach((value,index,array)=>{
console.log(array);
})
将forEach
传递给外部函数,当您想在多个阵列上使用同一函数时,这将非常有用。
function extFunct(value, index, array) {
console.log(array)
}
let array = [1, 2, 3, 4];
let array2 = [5, 6, 7, 8];
array.forEach(extFunct);
array2.forEach(extFunct);
保持代码简洁明了,您可以引用数组,而无需使用长而清晰的数组名。
let someLongDescriptiveArrayName = [1,2,3,4];
someLongDescriptiveArrayName.forEach((v,i,a)=>{
console.log(a)
})
我希望一切都有意义,即使不是随意问任何问题。
答案 1 :(得分:3)
它们是2个具有相同引用的变量,仅更改了变量名称。如下所示,如果我将一个项目推送到foreachArray中,它也会在globalArray中添加相同的项目。
var globalArray= ['Apple', 'Banana'];
globalArray.forEach(function(item, index, foreachArray) {
foreachArray.push('Orange');
console.log(foreachArray);// result is ['Apple', 'Banana', 'Orange'];
console.log(globalArray);// result is ['Apple', 'Banana', 'Orange'];
});
在此处检查应何时使用的方案:Why provide an array argument in Javascript's array.forEach callback?
答案 2 :(得分:2)
它们是相同的(它们引用相同的对象)。根据{{3}}:
array
(在您的情况下为foreachArray)是要应用forEach()的数组。
这是forEach
的签名:
someArray.forEach(function callback(currentValue[, index[, array]])
位置:
currentValue
:数组中正在处理的当前元素的值。
index(Optional)
:数组中正在处理的当前元素的索引。
array(Optional)
:要应用forEach()的数组。
在您这里的someArray
和array
相同,就像您的情况globalArray
和foreachArray
一样。
因此,如果需要引用在其上调用forEach
的数组,请使用foreachArray
,因为它是JavaScript提供的语言功能。
答案 3 :(得分:1)
globalArray
和foreachArray
对象是相同的。
您将第三个参数传递给foreachArray
。
第三参数
array
:forEach()应用于的数组。
它也指向相同的参考。
var globalArray= ['Apple', 'Banana'];
globalArray.forEach(function(item, index, foreachArray) {
foreachArray.push("Cherry");
console.log("foreachArray: ", foreachArray);// result is ['Apple', 'Banana'];
console.log("globalArray..", globalArray);// result is ['Apple', 'Banana'];
});