每个对象应该在对象数组中至少有一个真属性值?

时间:2018-01-11 17:11:24

标签: javascript jquery reactjs ecmascript-6

我想创建一个返回true的函数(每个对象应该至少有一个isValid:true)否则返回false。

const Items = [{
    parentValidators: [{
      isValid: true
    }, {
      isValid: false
    }, {
      isValid: false
    }]
  },
  {
    parentValidators: [{
      isValid: true
    }, {
      isValid: false
    }, {
      isValid: false
    }]
  }
]

// i tried : 
validateSection() {
  Items.map(item => {
    if (item.parentValidators) {
      const logs = item.parentValidators;
      return logs.map(l => {
        return l.isValid ? true : l.isValid;
      });
    }
  }).map((i, indx, arr) => {
    let count = 0;
    if (i.includes('true')) {
      count++;
    }
    return count === array.length ? true : false;
  })

}

2 个答案:

答案 0 :(得分:4)

如果Items中的每个项目至少有一个isValid值为true的验证程序,则返回true的函数是数组{{1}的组合的完美用例}和every方法:



some




答案 1 :(得分:1)

可以使用Array#some

const Items = [{
    parentValidators: [{
      isValid: true
    }, {
      isValid: false
    }, {
      isValid: false
    }]
  },
  {
    parentValidators: [{
      isValid: false
    }, {
      isValid: false
    }, {
      isValid: false
    }]
  }
]

const res = Items.map(({parentValidators:v})=> v.some(({isValid:i})=>i))

console.log(res)