JavaScript native groupBy reduce

后端 未结 5 553
甜味超标
甜味超标 2021-01-23 08:30

I am using JavaScript native reduce, however I want to slightly change in the grouping to get my desired result. I have an array as follows:

const people = [
          


        
5条回答
  •  自闭症患者
    2021-01-23 09:09

    Try this. I use Array.prototype.forEach and Array.prototype.push

    const people = [
      {name: "John", age: 23, city: "Seattle", state: "WA"},
      {name: "Mark", age: 25, city: "Houston", state: "TX"},
      {name: "Luke", age: 26, city: "Seattle", state: "WA"},
      {name: "Paul", age: 28, city: "Portland", state: "OR"},
      {name: "Matt", age: 21, city: "Oakland", state: "CA"},
      {name: "Sam", age: 24, city: "Oakland", state: "CA"}
    ];
    var arranged=[];
    people.forEach(function(e){
        var exist=false;
        arranged.forEach(function(e1){
            if(e1.state===e.state){
                exist=true;
                e1.persons.push({name:e.name,age:e.age});
            }
        });
        if(!exist){
            arranged.push({state:e.state,city:e.city,persons:[{name:e.name,age:e.age}]}); 
         }
    });
    console.log(arranged);

提交回复
热议问题