通过javascript对象迭代以查看它是否具有特定值

时间:2014-12-15 19:29:04

标签: javascript

我试图找出通过javascript对象进行交互的最佳方式,以查看其中一个键是否设置为某个值。我知道我可以做一个foreach循环,但我觉得有一种更简单的方法。

var myObject =  {
    a: false,
    b: false,
    c: false,
    x: false
}

如果至少有一个值设置为true,则id喜欢快速返回true,如果all都为false,则返回false。

3 个答案:

答案 0 :(得分:4)

你必须迭代,但你可以做这样的事情

var hasTrue = Object.keys(myObject).some(function(key) {
    return myObject[key];
});

这会使用Array.some,并在遇到true值时立即停止。

FIDDLE

答案 1 :(得分:0)

要返回key作为其值的yourValue,请执行以下操作:

var yourValue = true;

var key = Object.keys(myObject).filter(function (i) {
    return myObject[i] === yourValue;
})[0];

如果找不到密钥,它将返回undefined

如果您不需要key并且只需要知道该值是否在您的对象中,您只需使用some方法:

var hasValue = Object.keys(myObject).some(function (i) {
    return myObject[i] === yourValue;
});

答案 2 :(得分:0)

var any_true = false;
JSON.stringify(myObject, function(key, value) { 
    if (value === true) any_true = true; 
});

这使用JSON.stringify的回调功能。它的优点是即使在嵌套对象中也能找到任何真值。