从数组中删除零值

Removing zero values from array

本文关键字:删除 数组      更新时间:2023-09-26

你好,我现在正在使用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 个数组的任何地方

  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})
} 
其中

有几个问题,请尝试此更新的问题

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]