Javascript检查键是否不存在或是否应该在筛选器方法中具有特定值
我有一个目标Javascript检查键是否不存在或是否应该在筛选器方法中具有特定值,javascript,arrays,object,Javascript,Arrays,Object,我有一个目标 var obj = [ { key1: true, }, { key1: true, key2: true, }, { key1: true, key2: false, } ] 我的过滤函数是 const result = obj.filter(item => (!("key2" in item) || item.key2) ); return result; 在这
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
应该为true来过滤数组项。但是我得到的是结果中的完整项,它没有使用key2:false删除该项
var obj=[{
关键1:正确,
},
{
关键1:正确,
关键2:是的,
},
{
关键1:正确,
关键2:错误,
}
]
const result=obj.filter(item=>(!(item中的key2)| | item.key2));
控制台日志(结果)代码>使用Object.hasOwnProperty('key2')
在对象中查找键
var obj=[
{
关键1:正确,
},
{
关键1:正确,
关键2:是的,
},
{
关键1:正确,
关键2:错误,
}
]
const result=obj.filter(item=>(!item.hasOwnProperty('key2')| | item.key2));
控制台日志(结果)代码>您还可以对未定义的进行筛选:
var data=[{key1:true,},{key1:true,key2:true,},{key1:true,key2:false,}]
让result=data.filter(({key2})=>key2===未定义的| | key2)
log(result)
它似乎在代码段中工作。它返回前两个对象。你期望的结果是什么?期望的结果与问题一起添加。请检查并运行代码段,它会得到预期的答案。@JackBashford我之前提到过这一点。wiki中的“仅在问题特别涉及ecmascript 2015中提供的新功能或技术更改时使用ecmascript-6
标记”。这与过滤逻辑有关,与ES6无关。这种徽章养殖是不可接受的用户与2万代表。我的意思是,看看过去30天的顶级用户,我也得到了预期的结果,除了obj=
部分。您希望这会改变您的原始对象吗?除非有从原型继承的key2
,否则这将返回相同的内容。这也会给出完整的结果。@Hareesh不,它不会,它只返回数组中的前两个对象。就像你的代码一样。OK@Barmar我会尝试更小的data.filter(({key2})=>!key2)
Good catch!谢谢
var obj = [
{
key1: true,
},
{
key1: true,
key2: true,
},
{
key1: true,
key2: false,
}
]
obj.filter(item => (!item.hasOwnProperty('key2') || item.key2));