📅  最后修改于: 2023-12-03 14:51:16.671000             🧑  作者: Mango
在 JavaScript 中,对象是一种键-值对集合的数据结构。有时我们需要从对象中获取所有值为真的键。以下是一些方法可以实现这一目标:
使用 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()
方法来过滤出真值的键。
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()
方法在遍历对象时同时过滤出真值的键。
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 中获取对象中所有值为真的键的方法。我们可以选择其中任何一种方法来解决我们的问题。