我使用以下属性/值返回Json对象
Json数据对象:
Apple: true
Banana: true
Cat: true
我正在检查每个属性是真还是假如下,但我认为它不是聪明的方式..我有替代if / else考虑属性可能达到15
myController的:
servive.getObject(id).then(function (response){
var _apple = response.data.Apple;
var _banana = response.data.Banana;
var _cat = response.data.Cat;
if (_apple == true && _banana == true && _cat == true)
{
----------
---------
}
});
答案 0 :(得分:1)
像这样使用Object.keys()
和reduce()
:
var obj = response.data,
result = Object.keys(obj).reduce(function(a, b){ return a && obj[b]; }, true);
if (result){
.
.
.
}
Object.keys()
方法返回给定对象自己的数组 可枚举的属性,与a提供的顺序相同 for ... in循环(不同之处在于for-in循环枚举 原型链中的属性也是如此。
reduce()
方法对累加器和每个累加器应用一个函数 数组的值(从左到右)必须将其减少为单个 值。
工作示例:
var obj = {
apple: true,
banana: true,
cat: true
};
function getResult(obj) {
return Object.keys(obj).reduce(function(a, b) {
return a && obj[b];
}, true);
}
console.log(getResult(obj));
obj = {
apple: true,
banana: true,
cat: false
};
console.log(getResult(obj));