从JavaScript数组中删除索引未知项的更好方法
我有一个数组,在随机索引中有零。给定不同数组的索引未知。我使用了下面的for循环来查找和删除零,因此得到的数组是没有零的相同数组从JavaScript数组中删除索引未知项的更好方法,javascript,arrays,loops,for-loop,Javascript,Arrays,Loops,For Loop,我有一个数组,在随机索引中有零。给定不同数组的索引未知。我使用了下面的for循环来查找和删除零,因此得到的数组是没有零的相同数组 for (let i=0; i< arr.length; i++){ if(arr[i] === 0){ itemIndex = arr.indexOf(arr[i]); arr.splice(itemIndex, 1); //removes the zero at the index i = 0; //resets
for (let i=0; i< arr.length; i++){
if(arr[i] === 0){
itemIndex = arr.indexOf(arr[i]);
arr.splice(itemIndex, 1); //removes the zero at the index
i = 0; //resets the i to zero so that every item in the array is searched even after it is altered.
}
}
for(设i=0;i
如您所见,它将“i”重置为零,以便我可以再次遍历数组,因为它将被更改,并且零的索引将更改。我想知道有没有更好的办法?我有一种感觉,这可以被更好地编码。您只需要将
I
减少1。此外,当您已经拥有索引时,不需要使用indexOf
for (let i=0; i< arr.length; i++){
if(arr[i] === 0){
arr.splice(i, 1); //removes the zero at the index
i--;
}
}
您可以倒计时(即(让i=arr.length-1;i>=0;i-),这样您尚未检查的元素的索引不会更改
let result = arr.filter(e => e!==0)
或者,如果您想继续使用for循环实现:
填充一个新数组而不是改变正在循环的数组怎么样
let result = []
for(let e of arr) {
if(e!==0) result.push(e)
}
这是我从这样的数组中删除项的首选方法
const newArray=array.filter(项=>ele!==0)
这里有几个选项,你可以在这里选择
i
代替i
(即用i--
替换i=0
)arr=arr.filter(element=>element!==0)
arr
被初始化为常量,则第二个选项将不起作用。如果是这种情况,则必须使用选项1,或者将筛选结果分配给新数组,并在筛选后使用该结果代替原始数组
第二个选项更简洁,但第一个选项是对现有代码进行一个小的更改,以使其按预期工作。Array.filter()…向后走……过滤器将不会具有他们试图实现的代码的随机方面。哦,nvm我读错了问题域。你搞定了,哈哈
let result = []
for(let e of arr) {
if(e!==0) result.push(e)
}