javascript - 如何访问嵌套数组/对象并过滤数组的非空元素,如 NaN、null、0
问题描述
下面是对象数组。我们要做的是
- 创建一个数组,其中包含数组 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}]
解决方案
您可以转换为 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);
推荐阅读
- html - 为什么 Webpack Dev Server 在使用多个目录时不加载具有正确相对路径的图像?
- docker - 带有符号链接的 docker ADD
- javascript - Electron Forge 错误 - 无法读取未定义的属性“关闭”
- r - 找不到函数“is.square.matrix”
- reactjs - 带有POST的json服务器假rest api
- typescript - 尝试访问枚举的标签
- html - 同行等高等对齐的flexbox问题(产品卡片)
- mongodb - MySQL查询到猫鼬查询
- android - LazyColumn 通知项目的修改
- discord - discord.py 机器人的问题