为了账号安全,请及时绑定邮箱和手机立即绑定

如何访问嵌套数组/对象并过滤数组的非空元素,如 NaN、null、0

如何访问嵌套数组/对象并过滤数组的非空元素,如 NaN、null、0

ABOUTYOU 2022-06-16 10:57:39
下面是对象数组。我们要做的是创建一个数组,其中包含数组 arr 的所有非空元素,其值不等于 null、NaN、'undefined' 和 0留在第二个数组中var arr = [  { id: 15 },  { id: -1 },  { id: 0 },  { id: 3 },  { id: 12.2 },  {},  { id: null },  { id: NaN },  { id: "undefined" }];我试过的是var obj1 = {}; var prop1 = []; var prop2 = [];  arr.forEach(el=>{      if(el.id!==0 || el.id!==null || el.id!==undefined || el.id!==NaN){          prop1.push(el)      }      else{          prop2.push(el)      }  })  console.log(prop1)    console.log(prop2)但它不工作我收到的输出 -1] [{id: 15}, {id: -1}, {id: 0}, {id: 3}, {id: 12.2}, {}, {id: null}, {id: null}, { ID:“未定义”}]2] []预期的 -1] [{id:0},{id:null},{id:“未定义”}]2] [{id:15},{id:-1},{id:3},{id:12.2}]
查看完整描述

3 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

您可以转换为 boolean ( !el.id) 这将处理大多数情况,您必须"undefined"单独处理:


var arr = [

  { id: 15 },

  { id: -1 },

  { id: 0 },

  { id: 3 },

  { id: 12.2 },

  {},

  { id: null },

  { id: NaN },

  { id: "undefined" }

];


var obj1 = {};

 var prop1 = [];

 var prop2 = [];

  arr.forEach(el=>{

      if(!el.id || el.id === "undefined"){

          prop1.push(el)

      }

      else{

          prop2.push(el)

      }

  })


  console.log(prop1);

  console.log(prop2);

  console.log(prop1.length);

  console.log(prop2.length);


查看完整回答
反对 回复 2022-06-16
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

尝试这个:


var arr = [

  { id: 15 },

  { id: -1 },

  { id: 0 },

  { id: 3 },

  { id: 12.2 },

  {},

  { id: null },

  { id: NaN },

  { id: "undefined" }

];

let filterArray = arr.filter((el) => {return !el.id || [0,null,"undefined",NaN].includes(el.id)});

console.log(filterArray);

let filterArray1 = arr.filter((el) => {return el.id && ![0,null,"undefined",NaN].includes(el.id)});

console.log(filterArray1);


查看完整回答
反对 回复 2022-06-16
?
月关宝盒

TA贡献1772条经验 获得超5个赞

为什么它不起作用?是顺序不正确还是有 JavaScript 错误?

代码乍一看很好,您可以使用 if (!el.id),它检查 id 是否为“假”(0,null,undefined,NaN,false)

您还可以查看“map”和“filter”方法, https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/map


查看完整回答
反对 回复 2022-06-16
  • 3 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信