Polyfill for object.value返回真实断言

时间:2018-11-27 16:53:40

标签: javascript object ecmascript-5

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

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

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

遍历此对象时,返回值应为true,因为其中有true个值。

以下功能确实起作用:

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

但是由于IE的兼容性,我不能使用Object.valuearray.some

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

2 个答案:

答案 0 :(得分:3)

如果您需要旧式JavaScript,则只需进行简单的for循环:

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

答案 1 :(得分:0)

您甚至不需要进行ls *.avi | xargs -i -n1 bash -c "i={}; ffmpeg -i {} "\${i%.*}.mp4"检查。

hasOwnProperty