for循环和forEach循环之间的差异



在浏览一篇用C++为数组编写的博客时,出现了一个问题。

//...
std::vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
for(int i = 0; i< v.size(); i++){
v.push_back(v[i]);
}

上面将发生的是,随着向量的大小不断增加,它将进入一个无限循环。

如果使用纯for循环,JS也会出现类似的情况:

for(let i =0; i< arr.size; i++){
arr.push(arr[i])
}

但在forEach循环的情况下不会发生这种情况。比如如何实现forEach。我想知道为什么forEach在前三个元素之后停止向数组添加,而for没有。

思考如何实现具有相同行为的forEach函数。

如果你只是想确保你只迭代";起始长度";次数,则可以在for语句之前指定长度,并在循环条件中使用该长度:

function customForEach(array, callback) {
const startingLength = array.length;
for (let i = 0; i < startingLength; i++) {
callback(array[i], i, array)
}
}

据我所知,这反映了Array.forEach的行为

For Loop:JavaScript For Loop用于在数组或元素中迭代指定次数。如果知道一定数量的迭代,就应该使用它。

forEach循环:forEach((方法也用于在数组中循环,但它使用的函数与经典的"for循环"不同。它为数组的每个元素传递一个回调函数,同时传递以下参数:

  • 当前值(必需(:当前数组元素的值
  • Index(可选(:当前元素的索引号
  • Array(可选(:当前元素所属的数组对象

我们需要一个回调函数来使用forEach方法在数组中循环。

请在此处查看更多详细信息

最新更新