2016-08-31 3 views
0

개체 배열이 있습니다. weightedAverage 속성을 업데이트해야합니다. 처음에는 weightedAverage이 0으로 설정되었습니다. 자세한 내용은 아래 스크립트를 참조하십시오.밑줄을 사용하여 개체 확장

예상 OUPUT은 다음과 같습니다

[ 
     { 
     area:"Digital", 
     category:"Medical", 
     qId:"wRHmpHHGzrYLsCEJ32", 
     qqId:"step1", 
     type:"Reduce", 
     val:1, 
     **weightedAverage:80** 
     } 
]; 

스크립트

var arrayFlatten = [ 
     { 
     area:"Digital", 
     category:"Medical", 
     qId:"wRHmpHHGzrYLsCEJ32", 
     qqId:"step1", 
     type:"Reduce", 
     val:1, 
     weightedAverage:0 
     }, 
     { 
     area:"Digital", 
     category:"Analytics", 
     qId:"wRHmpHHGzrYLsCEJ32", 
     qqId:"step1", 
     type:"Reduce", 
     val:1, 
     weightedAverage:0 
     }, 
     { 
     area:"Digtal", 
     category:"Medical", 
     qId:"wRHmpHHGzrYLsCEJ32", 
     qqId:"step1", 
     type:"Reduce", 
     val:10, 
     weightedAverage:0 
     } 
    ]; 


    //groupBy qid 
    var groupqId = _.groupBy(arrayFlatten,'qId'); 
    console.log(groupqId); 
    //value dividedby total value 
    var result = {}; 
    _.each(groupqId, function(val, key) { 
     console.log(val); 
     result.qId=key; 
     result.weightedAverage = _.reduce(val, function(memo, v) { 
      console.log(v); 
      return memo + v.val; 
     }, 0)/15 * 100; 
    }); 
    console.log(result); 
+0

에 대한 간단한? –

+0

위 내용을 참조하십시오. 최종 출력물은 {qId : "wRHmpHHGzrYLsCEJ321", weightedAverage : 80}입니다. 하지만 아래 [ { 영역을 찾고 : "디지털" 카테고리 : "의료", QID "wRHmpHHGzrYLsCEJ32" qqId : "1 단계" 유형 : "줄", 발 : 1, ** 가중 평균 : 80 ** } ]; –

답변

0

당신은 간단하게이 작업을 수행 할 수 있습니다에게가 작동하지 않습니다 무엇 루프

var final=[]; 
for(var i = 0 ; i < arrayFlatten.length ; i++){ 
    arrayFlatten[i].weightedAverage = 80; 
    final.push(arrayFlatten[i]); 
} 
console.log("FINAL",final); 
관련 문제