Добавить в массив данные
Возникла задача. Есть начальный массив:
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, время: 20:30. |