在forEach中修改数组

exebook

我需要在Array.forEach中间插入一些东西到数组中。我想检查一下JavaScript如何处理这些情况。我期待任何事情,包括无休止的循环。但是结果对我来说很奇怪。您能解释一下发生了什么吗:

var A = [0, 1, 2, 3, 4, 5, 6, 7]
A.forEach(function(x) {
   if (x == 3) A.splice(1, 0, 'new')
})
document.write(JSON.stringify(A))

钟洁

通过大量中间变量的观察writeln

  1. 所述forEach环外表每个在原始索引只有一次-所以它必须存储在某些临时变量数组的长度。

  2. splice行在第一个元素之后的同一位置插入“ new”。

  3. 只有在第4个位置看到“ 3”后,才会发生这种情况。

  4. 因此,在第3次迭代中,第一次插入后,您的数组如下所示:

    [ 0, "new", 1, 2, 3, 4, 5, 6, 7 ]
    

    并且forEach迭代器在元素4处-再次为“ 3”。

  5. ..因此,“ new”将插入原始数组长度的其余部分

forEach循环代码的编写者必须考虑到有人在后台更改数组。比较安全的方法是复制原始数组,但是我认为这需要深度复制(您可能无法事先知道更改的深度),这可能导致大量复制。复制似乎是一个极端案例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在forEach中修改数组

来自分类常见问题

如何使用foreach修改数组数据

来自分类Dev

修改数组中的字符串?

来自分类Dev

在C函数中修改数组

来自分类Dev

使用ramda修改数组中的数据

来自分类Dev

我无法在Node中修改数组

来自分类Dev

使用for和in修改数组中的元素

来自分类Dev

在Swift中修改数组项

来自分类Dev

TSQL Azure 修改数组中的 JSON

来自分类Dev

在 React 组件的状态中修改数组

来自分类Dev

修改数组numpy中的多列

来自分类Dev

PHP foreach循环无需任何分配即可修改数组

来自分类Dev

PHP foreach循环无需任何分配即可修改数组

来自分类Dev

PHP-在foreach循环中修改数组

来自分类Dev

在 foreach 循环中 promise.all 之后修改数组

来自分类Dev

PHP在foreach中更改数组值

来自分类Dev

(jQuery)修改数组

来自分类Dev

修改数组列表

来自分类Dev

(jQuery)修改数组

来自分类Dev

在Swift中修改数组中对象的值

来自分类Dev

在Angular中修改数组不起作用

来自分类Dev

修改数组numpy中的实际元素值

来自分类Dev

动态修改数组中的Ruby实例变量

来自分类Dev

修改数组中复合类型的成员值

来自分类Dev

调用后无法在C中修改数组

来自分类Dev

PHP-如何修改数组中的变量?

来自分类Dev

增量查找和修改数组中的重复值(Python)

来自分类Dev

如何在Ruby中迭代地修改数组子集?

来自分类Dev

修改数组对象中的键字符串