检查任何对象的属性是否设置为true

时间:2018-03-23 06:22:01

标签: javascript vue.js

我只是想看看,如何知道globalSettings中的任何属性都设置为true:

<div :class="checkIfAnyGsIsOverridden(globalSettings) ? 'text-success' : 'text-muted")>Lorem Ipsum</div>


globalSettings: {
  setting1: true,
  setting2: false,
  setting3: false
}

checkIfAnyGsIsOverridden (obj) {
  return obj.filter(item => {
    // not sure what code should go here it check true or false 
    // that returns the length
  }).length;
}

发现此错误TypeError: obj.filter is not a function后来我明白.filter适用于array

也尝试了这个,但没有运气,因为它总是返回false:

checkIfAnyGsIsOverridden (obj) {
  console.log(Object.keys(obj).every(k => {
    return obj[k] === true
  }))
}

我知道总是很难,但我喜欢像上面那样做一些简单而有活力的事情:

if globalSetting.setting1 === true { 
  // do something 
}

1 个答案:

答案 0 :(得分:1)

  

也尝试了这个,但没有运气,因为它总是返回false:

由于您正在检查相反的情况 - 如果every属性设置为true

使用some代替

checkIfAnyGsIsOverridden (obj) {
  console.log(Object.keys(obj).some(k => {
    return obj[k] === true
  }))
}

如果任何一个属性设置为true,则上面的代码将返回true