在浏览一篇用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方法在数组中循环。
请在此处查看更多详细信息