Группировка массива объектов по полю - PullRequest
0 голосов
/ 23 октября 2019
var array1= [
    { name : "1", desc: "in odd", cat:"1" },
    { name : "3", desc: "in odd" ,cat:"2" }
];

var array2= [
    { name : "1", desc: "in even", cat:"1"},
    { name : "2", desc: "in even", cat:"1" },
    { name : "4", desc: "in even", cat:"1" }
];

Я хотел объединить массивы и объединить их в массив, чтобы он мог сгруппировать любого кота (конечный результат должен быть массивом объектов)

После объединения я хотел отсортировать сводный список поname.Can у нас есть несколько способов оптимизировать способы достижения того же?

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Ты выглядишь примерно так?

var array1 = [
  { name: "1", desc: "in odd", cat: "1" },
  { name: "3", desc: "in odd", cat: "2" }
];

var array2 = [
  { name: "1", desc: "in even", cat: "1" },
  { name: "2", desc: "in even", cat: "1" },
  { name: "4", desc: "in even", cat: "1" },
];
var array3 = array1.concat(array2);

var objConsolidated = {};

array3.forEach(element => {
  if(objConsolidated[element.cat]){
    objConsolidated[element.cat].push(element);
  } else {
    objConsolidated[element.cat] = [];
    objConsolidated[element.cat].push(element);
  }
});

console.log(objConsolidated);
0 голосов
/ 23 октября 2019

Вы имеете в виду

var array1= [
    { name : "1", desc: "in odd", cat:"1" },
    { name : "3", desc: "in odd" ,cat:"2" }
];

var array2= [
    { name : "1", desc: "in even", cat:"1"},
    { name : "2", desc: "in even", cat:"1" },
    { name : "4", desc: "in even", cat:"1" }
];



function getCatItems(cat){
    var n = [array1, array2].flat();
    return n.filter(i=>(i.cat==cat));
}
 console.log(getCatItems("1"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...