📜  在javascript中的对象中获取值为真的键(1)

📅  最后修改于: 2023-12-03 14:51:16.671000             🧑  作者: Mango

在 JavaScript 中的对象中获取值为真的键

在 JavaScript 中,对象是一种键-值对集合的数据结构。有时我们需要从对象中获取所有值为真的键。以下是一些方法可以实现这一目标:

使用 for…in 循环

使用 for…in 循环可以遍历对象的属性,并访问属性的值。我们可以在循环中使用 if 语句来判断属性值是否为真,并将真值的键存储在数组中。

const user = {
  name: 'Alice',
  age: 30,
  address: '',
  email: 'alice@example.com'
};

const trueKeys = [];

for (const key in user) {
  if (user[key]) {
    trueKeys.push(key);
  }
}

console.log(trueKeys); // ['name', 'age', 'email']

在上面的示例中,当属性的值为真时,我们将其键推送到 trueKeys 数组中。

使用 Object.keys() 和 Array.filter() 方法

Object.keys() 方法返回一个对象的所有属性的键名数组。我们可以使用它和 Array.filter() 方法来过滤出真值的键。

const user = {
  name: 'Alice',
  age: 30,
  address: '',
  email: 'alice@example.com'
};

const trueKeys = Object.keys(user).filter(key => user[key]);

console.log(trueKeys); // ['name', 'age', 'email']

在上面的示例中,我们使用 Object.keys() 获取对象的键数组,然后使用 Array.filter() 方法过滤出所有值为真的键。

使用 reduce() 方法

我们还可以使用 reduce() 方法在遍历对象时同时过滤出真值的键。

const user = {
  name: 'Alice',
  age: 30,
  address: '',
  email: 'alice@example.com'
};

const trueKeys = Object.keys(user).reduce((keys, key) => {
  if (user[key]) {
    keys.push(key);
  }
  return keys;
}, []);

console.log(trueKeys); // ['name', 'age', 'email']

在上面的示例中,我们将 reduce() 方法用于 Object.keys(user) 的结果,并在函数中使用 if 语句过滤出真值的键,然后将它们推送到 keys 数组中。最后,我们将该数组作为累加器的最终返回值。

总结起来,以上是几种在 JavaScript 中获取对象中所有值为真的键的方法。我们可以选择其中任何一种方法来解决我们的问题。