如何遍历嵌套对象以检查是否找到true?

时间:2019-01-12 02:34:53

标签: javascript loops

我有一个嵌套对象,我想遍历特定属性并检查是否存在true。

如果找不到true,我想返回false,否则,如果有一个true实例,我想停止循环。

let object = {
    firstProperty: 'foo',
    secondProperty: 'bar',
    objectProperty: {
        value1: false,
        value2: false,
        value3: true
}

我只想遍历objectProperty,如果找到true,则返回true,如果找不到true,则返回false

2 个答案:

答案 0 :(得分:1)

检查对象内部是否有任何值。

let object = {
    firstProperty: 'foo',
    secondProperty: 'bar',
    objectProperty: {
        value1: false,
        value2: false,
        value3: true
    }
}


const res = Object.values(object.objectProperty).some(value => value === true)

console.log(res)

答案 1 :(得分:0)

好吧,一旦获得keys数组,一切就变得简单了。您可以使用Object.keys(obj)方法获得该方法,该方法将返回给定对象的键数组。接下来,您可以简单地迭代并检查或使用lambda函数(在我们的示例中为reduce)。您要遍历一组键的节点,因此必须检查obj[key]的特定值。

我在下面添加了一个jsfiddle和两个工作示例。

let obj = {
    firstProperty: 'foo',
    secondProperty: 'bar',
    objectProperty: {
        value1: false,
        value2: false,
        value3: true
    }
};

// Method 1
let inner = obj.objectProperty;
let ans = Object.keys(inner).reduce((a, e) => inner[e] || a, false);
console.log(ans);

// Method 2
let found = false;
Object.keys(inner).forEach(key => {
  if (inner[key])
    found = true;
});

console.log(found);

干杯!