迭代Json对象的最佳方式

时间:2015-03-23 18:06:37

标签: javascript

我使用以下属性/值返回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)
    {
        ----------
        ---------
    }
});

1 个答案:

答案 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));