Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Добавить в массив данные (https://javascript.ru/forum/misc/79204-dobavit-v-massiv-dannye.html)

Начинающий-Js-кодер 04.01.2020 20:18

Добавить в массив данные
 
Возникла задача. Есть начальный массив:
var cur = {
  groups: []
};

Есть массив данных:
var data  = [
    ['group1', 'Петр'],
    ['group1', 'Ваня'],
    ['group3', 'Сидр'],
    ['group2', 'Петров']
];

Нужно сделать так, чтобы сначала проверялось, если ли такая группа если нет, то создать и потом добавлять данные туда. В финале массив должен выглядеть так:
var final = {
  groups:[
    group1:[
      'Петр','Ваня'
    ],
    group2:[
      'Петров'
    ],
    group3:[
      'Сидр'
    ]
  ]
}

Как это реализовать?

Malleys 04.01.2020 20:37

Вам вместо массива нужен объект.

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.

Начинающий-Js-кодер 05.01.2020 13:14

Спасибо за код.
Так как у меня 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.