从数组中删除零值

时间:2016-02-25 11:04:18

标签: javascript arrays object

你好我现在正在使用javascript,我想从数组中删除零值,数组看起来像这样,

0 : Object  
     color : "#24a7e1",
     data  : Array[119],
     name  : "Active
     status : 2
1 : Object
     color : "#26a727",
     data  : Array[119],
     name  : Completed,
     status: 4

这个数组可以有任意数量的对象,我需要做的是循环遍历数组,下降到每个数据属性,并从该数组中删除任何0的值。

我尝试使用对象

的特定数组
for(var i=0; i<filteredValueData[0].data.length;i++ )
{ 
     if(filteredValueData[0].data[i] == 0)
         filteredValueData[0].data[i].splice(i,1); 
} 

我收到了错误,

  

filteredValueData [0] .data [i] .splice不是函数

所以我不确定我做错了什么,对象可以有0个阵列到5个阵列的任何位置

2 个答案:

答案 0 :(得分:0)

其中有几个问题,请尝试更新一个

for(var i=0; i<filteredValueData[0].data.length;i++ )
{ 
     if(filteredValueData[0].data[i] == 0)
     {
         filteredValueData[0].data.splice(i,1);  //data[i] is replaced with data
         i--; //reduce the i counter;
     }
} 

检查这个简单的例子

var a = [1,2,3,0,2,1,0,2,3];
for(var i=0; i<a.length;i++ )
{ 
     if(a[i] == 0)
     {
         a.splice(i,1);  //data[i] is replaced with data
         i--; //reduce the i counter;
     }
} 
console.log(a);//[1, 2, 3, 2, 1, 2, 3]

答案 1 :(得分:0)

  filteredValueData[0].data[i].splice(i,1); 

这意味着您尝试在数组中的i元素上运行代码。如果我理解正确,那么我会这样做

for(var i=0; i<filteredValueData.length;i++ )
{ 
    filteredValueData[i].data = filteredValueData[i].data.filter(function(item){return item !== 0})
} 
相关问题