Я хочу разделить массив на два массива на основе его элементов, например, если у меня есть этот массив в качестве входных данных
[{id:1,name:"item1_g1"},{id:2,name:"item2_g2"},{id:3,name:"item3_g1"},{id:2,name:"item4_g2"}]
, выходные данные должны быть двумя массивами, подобными этому
первый массив:
[{id:1,name:"item1_g1"},{id:3,name:"item3_g1"}]
второй массив:
[{id:2,name:"item2_g2"},{id:2,name:"item4_g2"}]
Поскольку вам нужно просто сгруппировать элементы на основе их атрибута name
Я использую angularjs и я ужепопробовал этот код
var values = [{
id: 1,
name: "item1_g1"
}, {
id: 2,
name: "item2_g2"
}, {
id: 3,
name: "item3_g1"
}, {
id: 2,
name: "item4_g2"
}];
var group1 = values.filter(function(item) {
return (item.name.includes('g1'));
});
var group2 = values.filter(function(item) {
return (item.name.includes('g2'));
});
console.log(group1, group2)
Но мне не понравилось это решение, потому что в случае, если у меня большой массив, мне нужно его зациклить n раз, чтобы извлечь n массивов, что плохо для производительности
Есть ли способ сделать все это за один цикл?