-2
 multiple Array of object Like below i have where vendorId is same 
  but i have to find sum of its average value
  var arr=[
 {average:58.5,contractNumber,"5100020753",vendorId:9},
 {average:23.3,contractNumber,"5100020313",vendorId:24},
 {average:58.5,contractNumber,"5100019779",vendorId:9}]


m trying to findout object where vendorId id same adding its averagevalue of object where m facing challenge in iterating the object with similar vendorId

rohit
  • 21
  • 2
  • 2
    Please share your attempt. – gurvinder372 Jan 02 '18 at 07:11
  • Can someone please explain `where vendorId id same adding its averagevalue of object where m facing challenge in iterating the object with similar vendorId` – brk Jan 02 '18 at 07:12
  • @brk create groups based on id and total average for each group – Rajesh Jan 02 '18 at 07:13
  • Possible duplicate of [Sum javascript object propertyA values with same object propertyB in array of objects](https://stackoverflow.com/questions/19233283/sum-javascript-object-propertya-values-with-same-object-propertyb-in-array-of-ob) – Rajesh Jan 02 '18 at 07:14

2 Answers2

0

Do you want something like this

var arr=[{average:58.5,contractNumber:"5100020753",vendorId:9},{average:23.3,contractNumber:"5100020313",vendorId:24},{average:58.5,contractNumber:"5100019779",vendorId:9}];

 var r = {};
 for(let i in arr){
   var e = arr[i];
   if(r[e.vendorId] != undefined){
    r[e.vendorId] += e.average;
   }else{
    r[e.vendorId] = e.average;
   }
 };
 console.log(r);
freelancer
  • 1,174
  • 5
  • 12
-1

trying to find if same vendorId of object Adding it average value

Use reduce

var sumOfAverage = arr.reduce( ( c, i ) => (
 c[ i.vendorId ] = c[ i.vendorId ] || 0, 
 c[ i.vendorId ] += i.average, 
 c ) , 
{} );

Then you can use map to create the object.

var output = Object.keys( sumOfAverage ).map( s => ({ vendorId : s, average : sumOfAverage[ s ] }) );

Demo

var arr = [{
    average: 58.5,
    contractNumber: "5100020753",
    vendorId: 9
  },
  {
    average: 23.3,
    contractNumber: "5100020313",
    vendorId: 24
  },
  {
    average: 58.5,
    contractNumber: "5100019779",
    vendorId: 9
  }
];

var sumOfAverage = arr.reduce( ( c, i ) => (
     c[ i.vendorId ] = c[ i.vendorId ] || 0, 
     c[ i.vendorId ] += i.average, 
     c ) , 
   {} );

console.log( sumOfAverage );
var output = Object.keys( sumOfAverage ).map( s => ({ vendorId : s, average : sumOfAverage[ s ] }) ); 
console.log( output );
gurvinder372
  • 66,980
  • 10
  • 72
  • 94