javascript(angularjs)检查js对象中是否存在值

时间:2015-02-18 19:19:25

标签: javascript angularjs object

我有以下对象

{
  0 : false,
  1 : true,
  2 : false
}

我需要做的是循环遍历这些并根据条件将其中一些设置为true或false,但我需要一个函数来检查所有值是否设置为true或者对象中是否存在false。

我有以下内容来检查值是否为false以执行某些操作

 angular.forEach($scope.keyFiles, function (val, key) {
        if(val == false) {
              $scope.loadCanvas(key);
              return key;
        }
 });

但我现在需要一些东西来检查任何值中是否存在false,以及是否所有值都设置为true。

我是javascript的新手,请原谅我,如果这听起来像一个简单的解决方案。

2 个答案:

答案 0 :(得分:5)

希望这就是你要找的东西。

function containsFalse(obj){
    for(var prop in obj){
       if(obj[prop] === false) return true;
    }
    return false;
}

答案 1 :(得分:2)

这是一种简单的javascript方式:

var keyFiles = {
  0 : false,
  1 : true,
  2 : false
};

var falseExists = false;
for (var prop in keyFiles) {
    if (keyFiles.hasOwnProperty(prop) && keyFiles[prop] === false) {
        falseExists = true;
        break;
    }
}

console.log(falseExists);

MDN link

hasOwnProperty的更多信息

在现代浏览器(即IE 9 +,Chrome 5+等)中,代码可以简化如下:

for (var prop in Object.getOwnPropertyNames(keyFiles)) {
    if (keyFiles[prop] === false) {
        falseExists = true;
        break;
    }
}