首页 > 解决方案 > 为 object.value 填充以返回真实的断言

问题描述

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

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

var fruits = { apples: false, oranges: true, bananas: true }

当迭代这个对象时,返回应该是true因为里面有true值。

以下功能确实有效:

return Object.values(fruits).some(function(k) {
    return k;
});

但是由于 IE 兼容性,我不能使用Object.value也不能使用array.some

建议使用 Polyfill.map来获取每个值,但是下一步是删除.some()- 我尝试过使用.filter(),但这让我回到原来的问题,即它返回的key是真值,而不仅仅是断言存在真值数据库

标签: javascriptobjectecmascript-5

解决方案


如果你需要老式的 JavaScript,那么就去一个普通的for循环:

function hasTruthy(fruits) {
    for (var key in fruits) {
        if (fruits.hasOwnProperty(key) && fruits[key]) return true;
    }
    return false;
}

推荐阅读