ES6-根据真实值过滤对象



我有一个包含这样的布尔值的对象:

{ date: "2017-10-05", name_change: false, age_change: true, ... }

我想 filter() true的键。我还需要日期值。我该如何制作此filter

问候。

使用Object.entries()将对象转换为[键,值]元组的数组。通过检查值是否为 true,过滤元组。使用Object.fromEntries()转换回对象:

const obj = { 
  date: "2017-10-05", 
  name_change: false, 
  age_change: true 
};
const result = Object.fromEntries(
  Object
    .entries(obj)
    .filter(([, val]) => val !== true)
);
console.log(result);

旧答案

获取带有对象#键的键,然后用数组#delus迭代键数组,并构建一个不包含键的新对象,该对象值等于 true

const obj = { 
  date: "2017-10-05", 
  name_change: false, 
  age_change: true 
};
const result = Object.keys(obj)
  .reduce((o, key) => {
    obj[key] !== true && (o[key] = obj[key]);
    return o;
  }, {});
console.log(result);

最新更新