我有一个名为“ids”的数组和一些像['0','567','956','0','34']的值。现在我需要从这个数组中删除“0”值。
ids.remove(“0”); 无效。
请让我知道解决方案。
答案 0 :(得分:14)
在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
答案 1 :(得分:12)
这是一种方法:
['0','567','956','0','34'].filter(Number)
答案 2 :(得分:7)
这是一个函数,它将删除具有特定值的数组元素,当两个连续元素具有相同值时,该元素不会失败:
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&lt; = 8除外),您可以使用Array对象的filter()
方法,但要注意这确实会返回一个新数组:
a = a.filter(function(val) {
return val !== 0;
});
答案 3 :(得分:4)
对于非平凡大小的数组,构建新数组的速度比拼接或过滤器快得多。
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 );
}
}
如果你拼接,则向后迭代!
答案 4 :(得分:2)
下面的代码可以解决您的问题
for(var i=0; i<ids.length;i++ )
{
if(ids[i]=='0')
ids.splice(i,1);
}
答案 5 :(得分:1)
ids.filter(function(x) {return Number(x);});
答案 6 :(得分:1)
对于ES6最佳实践标准:
let a = ['0','567','956','0','34'];
a = a.filter(val => val !== "0");
(请注意,“ id”是数组内的字符串,因此要检查无论类型如何,都应输入“!=“)
答案 7 :(得分:0)
我相信,最短的方法是
var newList = ['0', '567', '956', '0', '34'].filter(cV => cV != "0")
你总是可以的,
listWithZeros = ['0', '567', '956', '0', '34']
newList = listWithZeros.filter(cv => cv != "0")
newList
包含您需要的列表。
说明
<块引用>Array.prototype.filter()
此方法返回一个新数组,该数组是在测试条件函数后过滤掉项目而创建的
它接收一个函数,可能带有3个参数。
语法:
Array.prototype.filter((currentValue, index, array) => { ... })
参数自行解释。