Javascript 从值为0的数组中删除对象

Javascript 从值为0的数组中删除对象,javascript,Javascript,您好,我正在生成一个数组,其中包含来自外部数据的对象。以下是我的代码: modifyFatalitiesByCause(data) { let array = []; for (let x in data) { array.push({ "name": data[x]['HarmfulEvent'], "value": parseInt(data[x]['Deaths']), }) } return ar

您好,我正在生成一个数组,其中包含来自外部数据的对象。以下是我的代码:

  modifyFatalitiesByCause(data) {
    let array = [];
    for (let x in data) {
      array.push({
        "name": data[x]['HarmfulEvent'],
        "value": parseInt(data[x]['Deaths']),
      })
    }
    return array;
  }
这很好,可以输出这些数据:这里只是一个大数组的一小部分

[
    {name: "Injured in Vehicle (Non-Collision)", value: 1},
    {name: "Fire Hydrant", value: 1},
    {name: "Snow Bank", value: 0},
    {name: "Cargo/Equipment", value: 0}
]
我不希望值为0的对象出现在我的数组中。我是否需要在最后删除这些对象,或者我是否可以在数据循环中修改我的for x以只推送值不为0的对象

哪一个是更简单的解决方案,有人能帮忙吗


谢谢

尝试使用数组过滤器过滤结果。 参考文献:
尝试使用数组过滤器过滤结果。 参考文献:

您可以在最后将它们全部删除,但在构建阵列时不将它们推送到阵列中会更有效。 大概是这样的:

if (parseInt(data[x]['Deaths']) { // 0 is falsey
  array.push({
    "name": data[x]['HarmfulEvent'],
    "value": parseInt(data[x]['Deaths']),
  });
}

您可以在最后将它们全部删除,但在构建阵列时不将它们推送到阵列中会更有效。 大概是这样的:

if (parseInt(data[x]['Deaths']) { // 0 is falsey
  array.push({
    "name": data[x]['HarmfulEvent'],
    "value": parseInt(data[x]['Deaths']),
  });
}

您只需在for循环中添加一个检查,在数组中添加数据[x]['death']为非零的对象。请尝试以下操作:

for (let x in data) {
     if(parseInt(data[x]['Deaths']) != 0){
       array.push({
         "name": data[x]['HarmfulEvent'],
         "value": parseInt(data[x]['Deaths']),
       })
     } 
}

您只需在for循环中添加一个检查,在数组中添加数据[x]['death']为非零的对象。请尝试以下操作:

for (let x in data) {
     if(parseInt(data[x]['Deaths']) != 0){
       array.push({
         "name": data[x]['HarmfulEvent'],
         "value": parseInt(data[x]['Deaths']),
       })
     } 
}

是的,您可以在按ifparseIntdata[x]['Deathers']>0这样的数组上的元素之前进行检查,然后按非零值,但对我来说很酷:

让数组=[{ 名称:在车辆非碰撞中受伤, 价值:1 }, { 名称:消防栓, 价值:1 }, { 名称:雪滩, 数值:0 }, { 名称:货物/设备, 数值:0 } ]; 结果=array.filterm=>elm.value>0;
console.logresult 是的,您可以在按ifparseIntdata[x]['Deathers']>0这样的数组上的元素之前进行检查,然后按非零值,但对我来说很酷:

让数组=[{ 名称:在车辆非碰撞中受伤, 价值:1 }, { 名称:消防栓, 价值:1 }, { 名称:雪滩, 数值:0 }, { 名称:货物/设备, 数值:0 } ]; 结果=array.filterm=>elm.value>0;
console.logresult 在执行业务逻辑之前,最好创建一个带谓词的if语句来检查验证。这是我解决这个问题的办法

  modifyFatalitiesByCause(data) {
    let array = [];
    for (let record in data) {
     if(isDeathCountZero(record, data)){
       array.push({
         "name": data[record]['HarmfulEvent'],
         "value": parseInt(data[record]['Deaths']),
       });
     } 
   }
    return array;
  }

 isDeathCountZero(record, data){
    return (parseInt(data[record]['Deaths']) != 0);
}

在执行业务逻辑之前,最好创建一个带谓词的if语句来检查验证。这是我解决这个问题的办法

  modifyFatalitiesByCause(data) {
    let array = [];
    for (let record in data) {
     if(isDeathCountZero(record, data)){
       array.push({
         "name": data[record]['HarmfulEvent'],
         "value": parseInt(data[record]['Deaths']),
       });
     } 
   }
    return array;
  }

 isDeathCountZero(record, data){
    return (parseInt(data[record]['Deaths']) != 0);
}

array.filterx=>x.value?或者在按下按钮检查数据[x][“死亡”]!=0所以在添加前添加一个if检查….array.filterx=>x.value?或者在按下按钮检查数据[x][“死亡”]!=0因此,请在添加前添加一个if检查…@cup\u您应该接受此答案或amrender提供的答案_singh@cup_of你应该接受这个答案或者amrender_singhthanks的答案,但我同意M.Wyatt的解决方案。给你一个upvote@cup_of令人惊叹的没关系,你可以使用ifparseIntdata[x]['Deathers']>0,没有问题。祝你好运:谢谢你的回答,但我同意怀亚特先生的解决方案。给你一个upvote@cup_of令人惊叹的没关系,你可以使用ifparseIntdata[x]['Deathers']>0,没有问题。祝你好运: