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)
),jsfiddle也将冻结。如果我在没有for循环的情况下执行此操作,而是选择一个特定的索引,则它将起作用。怎么了 有什么方法可以使for循环内的拼接工作(添加但不删除项目)?
另外,当我将FreeCodeCamp的编辑器与此代码配合使用时,它不会冻结,但会像以前从未使用拼接那样将其返回给我。但是,如果我为它分配了一个变量(var rem = arr.splice(i,1)
在for循环中),它将返回删除的项,而无需实际修改数组本身(数组保持完全相同)。
arr.splice(i,0,'limes');
会在'pears '元素之前注入'limes'元素,有效地将其移到数组末尾一个位置,因此在下一次迭代中,您的代码将再次击中'pears',并在其前面注入另一个'limes'等等。
您可以通过添加轻松地将其可视化
console.log(arr);
在您的if块之后,这将导致如下所示的输出:
["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"]
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句