Javascript 返回truthy断言的object.value的Polyfill
我最初的任务是创建一个函数,如果我的数据对象包含truthy值,该函数将返回一个布尔值 我不关心什么值或键是真实的,只关心数据包含真实的值Javascript 返回truthy断言的object.value的Polyfill,javascript,object,ecmascript-5,Javascript,Object,Ecmascript 5,我最初的任务是创建一个函数,如果我的数据对象包含truthy值,该函数将返回一个布尔值 我不关心什么值或键是真实的,只关心数据包含真实的值 var fruits = { apples: false, oranges: true, bananas: true } 迭代此对象时,返回值应为true,因为其中有true值 以下功能确实有效: return Object.values(fruits).some(function(k) { return k; }); 但是,我不能使用Objec
var fruits = { apples: false, oranges: true, bananas: true }
迭代此对象时,返回值应为true
,因为其中有true
值
以下功能确实有效:
return Object.values(fruits).some(function(k) {
return k;
});
但是,我不能使用Object.value
或数组。由于IE兼容性,有些
建议使用
.map
来获取每个值,但是下一步是删除.some()
-我已经尝试使用.filter()
但这让我回到了最初的问题,即它返回的键是truthy,而不仅仅是数据库中存在truthy值的断言如果您需要旧式JavaScript,那么只需执行一个简单的for
循环:
function hasTruthy(fruits) {
for (var key in fruits) {
if (fruits.hasOwnProperty(key) && fruits[key]) return true;
}
return false;
}
如果您需要老式JavaScript,那么只需使用普通的for
循环:
function hasTruthy(fruits) {
for (var key in fruits) {
if (fruits.hasOwnProperty(key) && fruits[key]) return true;
}
return false;
}
您甚至不需要检查hasOwnProperty
var={
苹果:错,
橙子:是的,
香蕉:是的
}
函数hasTruthyValue(obj){
用于(输入obj){
if(obj[键]){
返回true;
}
}
}
log(hasTruthyValue(fruits))//真的
您甚至不需要检查hasOwnProperty
var={
苹果:错,
橙子:是的,
香蕉:是的
}
函数hasTruthyValue(obj){
用于(输入obj){
if(obj[键]){
返回true;
}
}
}
log(hasTruthyValue(fruits))//true
长期使用just use长期使用just usevar fruits={apples:false,oranges:false,bananas:false}
返回未定义-这是falsy,但是still@mplungjan这不是一个truthy
值OP写的Object.values(水果)。一些有效。请注意,相应的for
循环只保证与对象使用相同的属性。当验证列出的属性是否为自有属性时,值
。@trincot她发布代码的方式,我认为您不需要检查。如果她只希望原始对象返回true
,那就由她自己决定了。就我个人而言,如果我写var fruits={apples:false,oranges:false,bananas:false}fruits.pears=true代码>并将其发送给一个函数以检查它是否有任何truthy
值,当它告诉我没有时,我会感到困惑。var fruits={apples:false,oranges:false,bananas:false}
返回未定义的值-这是错误的,但是still@mplungjan这不是一个truthy
value OP写的Object.values(水果)。一些
有效。请注意,对应的
for
循环只保证在验证列出的属性是否为自有属性时,将相同的属性用作对象。值
。@trincot按照她发布代码的方式,我认为您不需要检查。如果她只希望返回原始对象true
,这将由她来决定。就个人而言,如果我写var fruits={apples:false,oranges:false,bananas:false}fruits.pears=true;
并将其发送给函数检查它是否有truthy
值,当它告诉我没有时,我会感到困惑。