我有一个名为“ids”的数组,其中包含了一些值,如['0','567','956','0','34']。现在我需要从这个数组中删除“0”个值。**ids.remove(“0”);**不工作。
zvokhttg1#
下面是一个函数,它将删除数组中具有特定值的元素,当两个连续的元素具有相同的值时,该函数不会失败:
function removeElementsWithValue(arr, val) { var i = arr.length; while (i--) { if (arr[i] === val) { arr.splice(i, 1); } } return arr; } var a = [1, 0, 0, 1]; removeElementsWithValue(a, 0); console.log(a); // [1, 1]
在大多数浏览器中(除了IE〈= 8),你可以使用Array对象的filter()方法,但是要注意这会返回一个新的数组:
filter()
a = a.filter(function(val) { return val !== 0; });
bweufnob2#
在javascript中使用splice方法。尝试以下函数:
function removeElement(arrayName,arrayElement) { for(var i=0; i<arrayName.length;i++ ) { if(arrayName[i]==arrayElement) arrayName.splice(i,1); } }
参数为:
arrayName:- Name of the array. arrayElement:- Element you want to remove from array
drnojrws3#
这里有一个方法可以做到这一点:
['0','567','956','0','34'].filter(Number)
tgabmvqs4#
对于非平凡大小的数组,构建新数组仍然比拼接或过滤要快得多。
var new_arr = [], tmp; for(var i=0, l=old_arr.length; i<l; i++) { tmp = old_arr[i]; if( tmp !== '0' ) { new_arr.push( tmp ); } }
如果要拼接,请向后迭代!
oipij1gg5#
对于ES6最佳实践标准:
let a = ['0','567','956','0','34']; a = a.filter(val => val !== "0");
(note你的“id”是数组中的字符串,所以不管类型如何,你都应该写“!=”)
von4xj4u6#
下面的代码可以解决您的问题
for(var i=0; i<ids.length;i++ ) { if(ids[i]=='0') ids.splice(i,1); }
72qzrwbm7#
ids.filter(function(x) {return Number(x);});
jaql4c8m8#
我相信,最短的方法是
var newList = ['0', '567', '956', '0', '34'].filter(cV => cV != "0")
你总是可以的,
listWithZeros = ['0', '567', '956', '0', '34'] newList = listWithZeros.filter(cv => cv != "0")
newList包含您所需的列表。
newList
数组.原型.筛选器()此方法返回一个新数组,该数组是通过在测试条件函数后筛选出项而创建的它接受一个函数,可能有3个参数。语法:
Array.prototype.filter((currentValue, index, array) => { ... })
参数说明了一切。Read more here.
nimxete29#
最简单的方法是使用splice!!.但是有一个问题,每当你删除一个元素,你的数组大小就会不断减少。所以循环会跳过数组大小减少的一个索引。此程序只删除每个第一个零。
splice
// Wrong approach let num = [1, 0, 0, 2, 0, 0, 3,]; for(let i=0; i<num.length; i++){ if(num[i]==0) num.splice(i, 1); } console.log(num)
输出将是
[1,0,2,0,3]
因此,要删除所有的零,如果您发现了非零数字,则应增加索引。
let i = 0; while(i<num.length){ if(num[i]==0){ num.splice(i,1); } else{ i++; } }
但是有一个更好的方法。因为改变数组的大小只影响数组的右边。你可以反向遍历并拼接。
for(let i=num.length-1; i>=0; i--){ if(num[i]===0) num.splice(i,1); }
9条答案
按热度按时间zvokhttg1#
下面是一个函数,它将删除数组中具有特定值的元素,当两个连续的元素具有相同的值时,该函数不会失败:
在大多数浏览器中(除了IE〈= 8),你可以使用Array对象的
filter()
方法,但是要注意这会返回一个新的数组:bweufnob2#
在javascript中使用splice方法。尝试以下函数:
参数为:
drnojrws3#
这里有一个方法可以做到这一点:
tgabmvqs4#
对于非平凡大小的数组,构建新数组仍然比拼接或过滤要快得多。
如果要拼接,请向后迭代!
oipij1gg5#
对于ES6最佳实践标准:
(note你的“id”是数组中的字符串,所以不管类型如何,你都应该写“!=”)
von4xj4u6#
下面的代码可以解决您的问题
72qzrwbm7#
jaql4c8m8#
我相信,最短的方法是
你总是可以的,
newList
包含您所需的列表。数组.原型.筛选器()
此方法返回一个新数组,该数组是通过在测试条件函数后筛选出项而创建的
它接受一个函数,可能有3个参数。
语法:
参数说明了一切。
Read more here.
nimxete29#
最简单的方法是使用
splice
!!.但是有一个问题,每当你删除一个元素,你的数组大小就会不断减少。所以循环会跳过数组大小减少的一个索引。此程序只删除每个第一个零。
输出将是
因此,要删除所有的零,如果您发现了非零数字,则应增加索引。
但是有一个更好的方法。因为改变数组的大小只影响数组的右边。你可以反向遍历并拼接。