作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我的对象包含一个具有真值的键,我真的很困惑如何返回一个简单的真/假。我不想返回键或值本身,只是断言它确实包含一个真值。
例如
var fruits = { apples: false, oranges: true, bananas: true }
此对象中有一个真值。我不在乎哪个是真的...我只想能够返回 true
因为有一个 true 值。
我当前的解决方案返回 ["oranges", "bananas"]
而不是 true
Object.keys(fruits).filter(function(key) {
return !!fruits[key]
})
最佳答案
作为Giuseppe Leo's answer suggests , 你可以使用 Object.values
(键在这里并不重要)生成一个对象值数组来调用 Array#includes
上:
const fruits = {apples: false, oranges: true, bananas: true};
console.log(Object.values(fruits).includes(true));
// test the sad path
console.log(Object.values({foo: false, bar: 42}).includes(true));
如果Object.keys
是允许的,但 Object.values
和 includes
不是,您可以使用类似 Array#reduce
的东西:
var fruits = {apples: false, oranges: true, bananas: true};
console.log(Object.keys(fruits).reduce((a, e) => a || fruits[e] === true, false));
如果您无法访问任何东西(或者不喜欢上面的reduce
方法不会短路),您可以随时编写一个函数遍历键以找到特定的目标值(以保持函数可重用于 true
之外的其他目标):
function containsValue(obj, target) {
for (var key in obj) {
if (obj[key] === target) {
return true;
}
}
return false;
}
var fruits = {apples: false, oranges: true, bananas: true};
console.log(containsValue(fruits, true));
关于javascript - 如果对象包含真键,则返回 bool 真值,不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53503186/
我是一名优秀的程序员,十分优秀!