gpt4 book ai didi

javascript - 为什么 splice 在这个 for 循环中不起作用?

转载 作者:行者123 更新时间:2023-11-29 16:48:19 27 4
gpt4 key购买 nike

var arr = ['apples','oranges','pears','grapes'];

for (var i=0; i<arr.length; i++) {
if (arr[i] == 'pears') {
arr.splice(i,0,'limes');
}
}

当我尝试在 jsfiddle 中运行它时,页面卡住。如果我使用特定索引代替 i (arr.splice(2,0,'limes')) 或者如果我尝试删除项目 (arr.splice(2 ,1))。如果我在没有 for 循环的情况下执行此操作,而是选择一个特定的索引,它将起作用。这里出了什么问题?有什么方法可以让 splice 在 for 循环中工作(用于添加,而不是删除项目)?

此外,当我将 FreeCodeCamp 的编辑器与此代码一起使用时,它不会卡住,但会返回原始数组,就好像从未在其上使用过 splice 一样。如果我为它分配一个变量(var rem = arr.splice(i,1) 在 for 循环中),但是,它会返回删除的项目而不实际修改数组本身(数组仍然完全一样)。

最佳答案

arr.splice(i,0,'limes'); 

将在“pears”元素之前注入(inject)“limes”元素,有效地将它移动一个位置到数组的末尾,所以在下一次迭代中,您的代码将再次点击“梨”,并在它前面再注入(inject)一颗“酸橙”,依此类推。

您可以通过添加轻松地将其可视化

console.log(arr);

在你的 if block 之后,这将导致如下输出:

    ["apples", "oranges", "limes", "pears", "grapes"]
["apples", "oranges", "limes", "limes", "pears", "grapes"]
["apples", "oranges", "limes", "limes", "limes", "pears", "grapes"]
["apples", "oranges", "limes", "limes", "limes", "limes", "pears","grapes"]
...

关于javascript - 为什么 splice 在这个 for 循环中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38413999/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com