Добавить в массив данные
Возникла задача. Есть начальный массив:
var cur = { groups: [] }; Есть массив данных: var data = [ ['group1', 'Петр'], ['group1', 'Ваня'], ['group3', 'Сидр'], ['group2', 'Петров'] ]; Нужно сделать так, чтобы сначала проверялось, если ли такая группа если нет, то создать и потом добавлять данные туда. В финале массив должен выглядеть так: var final = { groups:[ group1:[ 'Петр','Ваня' ], group2:[ 'Петров' ], group3:[ 'Сидр' ] ] } Как это реализовать? |
Вам вместо массива нужен объект.
var cur = { groups: {} }; var data = [['group1', 'Петр'], ['group1', 'Ваня'], ['group3', 'Сидр'], ['group2', 'Петров']]; for(const [group, name] of data) { if(group in cur.groups === false) cur.groups[group] = []; cur.groups[group].push(name); } console.log(cur); В JS обычно используют что-то одно для представления данных — Object, Array, типы наследующие от TypedArray, Map или Set. |
Спасибо за код.
Так как у меня ff49 и итераторы не поддерживает и обновляться не планирую, переписал вот так: var cur = { groups: { } }; var data = [['group1', 'Петр'], ['group1', 'Ваня'], ['group3', 'Сидр'], ['group2', 'Петров']]; for(var i = 0; i < data.length; i++){ if(data[i][0] in cur.groups === false) cur.groups[ data[i][0] ] = []; cur.groups[ data[i][0] ].push( data[i][1] ); } console.log(cur); Колхозно конечно, но должно работать. |
Часовой пояс GMT +3, время: 08:01. |