Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript检查键是否不存在或是否应该在筛选器方法中具有特定值_Javascript_Arrays_Object - Fatal编程技术网

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));