Javascript 返回truthy断言的object.value的Polyfill

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

我最初的任务是创建一个函数,如果我的数据对象包含truthy值,该函数将返回一个布尔值

我不关心什么值或键是真实的,只关心数据包含真实的值

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 use
var 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
值,当它告诉我没有时,我会感到困惑。