2017-02-24 7 views
-1
$scope.data=[ 
    { 
    "vpay": [ 
     { 
     "count": 34 
     }, 
     { 
     "count": 21 
     }, 
     { 
     "count": 12 
     } 
    ] 
    }, 
    { 
    "mastercard": [ 
     { 
     "count": 0 
     }, 
     { 
     "count": 89 
     }, 
     { 
     "count": 9 
     } 
    ] 
    } 
]; 

どのように、すなわち効率的な方法で第& 3番目のエントリ同様に= 0 & = 34 &数をカウント各vpayの最初のエントリ&マスターを盗んことができますか?各キーの最初の要素のみを取得するにはどうすればよいですか?

+0

どの出力形式ですか? –

+0

第1レベルのオブジェクトにいくつのサブオブジェクトが存在する可能性がありますか? –

+0

[ { "カウント":34 }、{ "カウント":110 }、{ "カウント":21 }]。 – rozer

答えて

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

+0

出力を得る方法を教えてください\t [{"count":34}、{"count":110}、{"count":21}];すなわち各キーの第1、第2および第3のエントリの合計? – rozer

+0

@rozer、それはあなたのために今働きますか? –

+1

それは私のために働いた。 – rozer

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

出力をどのように[{"count":34}、{"count":110}、{"count":21}]にすることができますか。すなわち各キーの第1、第2および第3のエントリの合計? – rozer

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])), []); 

ワーキングsnippett:

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

0

次の2つの方法

方法1によってこれを行うことができます。次のとおりです。

Object.keys(data)[0]; 

方法2:次のとおりです。

for (o in obj) { ... } 

希望はあなたを助けました:)

関連する問題