检查键是否不存在或在过滤器方法中具有特定值



我的对象为

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为truthyundefined

,即Aswin建议的短甚至短:

var data = [ { key1: true, }, { key1: true, key2: true, }, { key1: true, key2: false, } ] 
let result = data.filter(({key2}) => !key2)
console.log(result)

最新更新