ES6 - 根据真实值过滤对象

Ade*_*del 4 ecmascript-6 reactjs react-native

我有一个包含一些布尔值的对象,如下所示:

{ date: "2017-10-05", name_change: false, age_change: true, ... }
Run Code Online (Sandbox Code Playgroud)

我想要filter()那些真实的钥匙。我还需要日期值。我该怎么做这个filter

问候。

Ori*_*ori 6

用于Object.entries()将对象转换为 [key, value] 元组数组。通过检查值是否为 来过滤元组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);
Run Code Online (Sandbox Code Playgroud)

旧答案

使用Object#keys获取键,然后使用Array#reduce迭代键数组,并构建一个不包含值等于的键的新对象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);
Run Code Online (Sandbox Code Playgroud)