У меня есть массив объектов, и я пытаюсь сгруппировать их по аналогичному значению свойства. Так что давайте говорить здесь массивуменьшить массив до a, сгруппировав объекты с тем же свойством
[
{
"size":"6.5",
"width":"W"
},
{
"size":"6.5",
"width":"M"
},
{
"size":"7.5",
"width":"w"
},
{
"size":"8",
"width":"M"
},
{
"size":"8",
"width":"w"
}
]
и я пытаюсь получить что-то вроде этого
[
{
"size_new":"6.5",
"width_group":[
"W",
"M"
]
},
{
"size_new":"7.5",
"width_group":[
"M"
]
},
{
"size_new":"8",
"width_group":[
"w",
"M"
]
}
]
My JS выглядит следующим образом
var _x = [];
for(var i = 0; i < x.length; i++){
if(x[i].size == x[i+1].size){
_x[i] = {
new_size: x[i].size,
width_group: [x[i].width,x[i+1].width]
}
}
}
Вот моя скрипка http://jsfiddle.net/sghoush1/ogrqg412/1/
Я вполне уверен, что, вероятно, есть гигантская зияющая дыра в моей логике
Возможный дубликат: [Remap array to object] (http://stackoverflow.com/questions/28182367/remap-array-to-object) – Xotic750
var o = {}; x.forEach (function (a) {o [a.size] = o [a.size] || {size: a.size, widths: []}; o [a.size] .widths.push (a.width);}); o; – dandavis
@ dandavis - works – soum