如何仅检索每个键的第一个元素?

时间:2017-02-24 19:39:11

标签: javascript

$scope.data=[
  {
    "vpay": [
      {
        "count": 34
      },
      {
        "count": 21
      },
      {
        "count": 12
      }
    ]
  },
  {
    "mastercard": [
      {
        "count": 0
      },
      {
        "count": 89
      },
      {
        "count": 9
      }
    ]
  }
];

我怎样才能只检索每个vpay&的第一个条目万事达卡即计数= 34& count = 0&以类似的方式第二&第三次以有效的方式进入?

4 个答案:

答案 0 :(得分:1)

您可以迭代数组和键,并在同一索引上添加值。

var $scope = { data: [{ vpay: [{ count: 34 }, { count: 21 }, { count: 12 }] }, { mastercard: [{ count: 0 }, { count: 89 }, { count: 9 }] }] },
    result = $scope.data.reduce(function (r, o) {
        Object.keys(o).forEach(function (k) {
            o[k].forEach(function (p, i) {
                r[i] = r[i] || {};
                Object.keys(p).forEach(function (l) {
                    r[i][l] = (r[i][l] || 0) + p[l];
                });                    
            });
        });
        return r;
    }, []);

console.log(result);

答案 1 :(得分:0)

var results = [];
for(var i = 0; i < $scope.data.length; i++){
 for(key in data[i]){
  results.push(data[i][key][0]);
 }
}

答案 2 :(得分:0)

var firstElements = $scope.data.reduce(function(res, o) {
  return res.concat(Object.keys(o).map(function(k) {
    return o[k][0];
  }));
}, []);

或使用箭头功能

var firstElements = $scope.data.reduce((res, o) => res.concat(Object.keys(o).map(k => o[k][0])), []);

工作片段

&#13;
&#13;
var $scope = {};

$scope.data = [{"vpay":[{"count":34},{"count":21},{"count":12}]},{"mastercard":[{"count":0},{"count":89},{"count":9}]}];

var firstElements = $scope.data.reduce((res, o) => res.concat(Object.keys(o).map(k => o[k][0])), []);

console.log(firstElements);
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您可以通过两种方法完成此操作

方法1:以下内容:

Object.keys(data)[0];

方法2:以下内容:

for (o in obj) { ... }

希望它能帮到你:)。