提问人:rowen 提问时间:8/24/2022 更新时间:8/25/2022 访问量:441
为什么由 false 值组成的 typescript 对象不返回 false?否则我该怎么做?
Why doesn't typescript object made up of false values return false? Otherwise how can I make it?
问:
我有以下对象:
const obj = {valueOne: false, valueTwo: false, valueThree: false}
和
console.log(obj)
console.log(Boolean(obj))
// true
// true
有人会认为会回来,但事实并非如此?有没有办法在不评估每个字段的情况下返回对象的整体真实性?console.log(Boolean(obj)
false
所以基本上我想要以下内容的简写版本:
if (obj.valueOne || obj.valueTwo || object.valueThree){
return true
}else{
return false
}
答:
4赞
Quentin
8/24/2022
#1
有人会认为console.log(Boolean(obj)会返回false,但事实并非如此?
不。该规范说,当你将一个对象转换为布尔值时,你会得到 .这是无条件的。对象的属性具有什么值并不重要。true
有没有办法在不评估每个字段的情况下返回对象的整体真实性?
没有。
您可以提取值并搜索一个真实的值。
const obj = {
valueOne: false,
valueTwo: false,
valueThree: false
}
const anyTruthy = Object.values(obj).some(value => value);
console.log(anyTruthy);
...一旦它找到一个匹配的,它就会停止,但你必须搜索它们,以确认它们都没有。它确实使您不必显式命名每个属性。
评论
Object.keys(obj).every((key) => !obj[key])
as