我的对象为
var obj = [
{
key1: true,
},
{
key1: true,
key2: true,
},
{
key1: true,
key2: false,
}
]
我的过滤功能是
const result = obj.filter(item => (!("key2" in item) || item.key2) );
return result;
在这里,我试图用key2
过滤数组项不存在,否则key2
应该是正确的。但是,我在结果中获得了完整的项目,并且它不会用key2: false
var obj = [{
key1: true,
},
{
key1: true,
key2: true,
},
{
key1: true,
key2: false,
}
]
const result = obj.filter(item => (!("key2" in item) || item.key2));
console.log(result);
预期结果
var obj = [
{
key1: true,
},
{
key1: true,
key2: true,
},
]
使用 Object.hasOwnProperty('key2')
查找对象中的密钥
var obj = [
{
key1: true,
},
{
key1: true,
key2: true,
},
{
key1: true,
key2: false,
}
]
const result = obj.filter(item => (!item.hasOwnProperty('key2') || item.key2) );
console.log(result);
您也可以在undefined
上过滤:
var data = [ { key1: true, }, { key1: true, key2: true, }, { key1: true, key2: false, } ]
let result = data.filter(({key2}) => key2 === undefined || key2)
console.log(result)
这将过滤Key2为truthy
或undefined
,即Aswin
建议的短甚至短:
var data = [ { key1: true, }, { key1: true, key2: true, }, { key1: true, key2: false, } ]
let result = data.filter(({key2}) => !key2)
console.log(result)