【发布时间】:2020-07-21 12:12:02
【问题描述】:
抱歉,我之前写的问题有点仓促,所以无法用正确的例子正确表达。
下面的问题已经出现了很多次,我总是卡住。我对 Javascript 的了解只是初级水平。
我希望我的数组列表在迭代时发生变异和变化。 本质上,迭代从第一次迭代获得的全新数组。
arr = [ 1, 2, 1, 3, 4, 2, 4, 1, 2, 4 ]
if arr[n]== 1 and arr[n+1] == 2 || arr[n] == 3 || arr[n+1] == 4
then remove arr[n] and arr[n+1] and current index is +2 else
newarr.push[n] and current index is +1
Loop over
上述循环运行后,我们得到:
newarr = [1, 2, 4, 4];
现在循环以相同的条件遍历这个新数组。我们得到
newarr = [4,4];
现在由于条件不能满足,我们跳出循环。
希望这更清楚。我已经尝试了一切,但循环总是引用原始数组,我只是不知道如何让它使用结果数组。这是可以通过递归或reduce方法完成的吗?
感谢任何建议。谢谢。
【问题讨论】:
-
StackOverflow 不是免费的编码服务。你应该try to solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
-
在迭代数组时要小心从数组中删除元素。以下所有元素的索引将向下移动,这可能导致您的迭代跳过元素。通常最好从结尾而不是开头进行迭代。
-
为什么
2, 15, 6, 7转向2, 21, 7?您的规则没有修改任何值对吗? -
@KentaNomoto 你是对的。我的例子不是更清楚。我已经更新了我的问题,请看一下。规则确实会修改该值。循环应始终使用上一次迭代的结果数组。
标签: javascript arrays loops iteration mutation