Как преобразовать многомерный массив в объекты другого массива?
Есть многомерный массив. Нужно с помощью цикла преобразовать вложенные массивы в объекты с подходящими парами ключ-значение (автор,текст) и сохранить в новый массив.
let messages = [
[ "zloy-zloy", "Мы с Алешей сегодня на иксбоксе рубились, потом в маке поели, потом ему новый телефон купили, и два часа с горок в Нескучном саду катались."],
["zloy-zloy", "У Алеши завтра день рождения."],
["zloy-zloy", "Он мой дед. Ему будет 81 год."],
["Вы", "LOL"]
];
В итоге должна получиться структура: Простой массив [{объект1}{...}{объектN}]
Сам цикл легко дался, но вот не приложу ума как сохранить полученные значения в массив в виде объектов.
let newMessages = [];
for (let i = 0; i < messages.length; i++){
newMessages.author = messages[i][0];
newMessages.text = messages[i][1];
}
console.log(newMessages);
Ответы (2 шт):
Автор решения: rusgeli
→ Ссылка
Создайте переменную как объект в цикле, и уже этому объекту добавляйте свойства. а потом через push положите в результирующий массив.
let messages = [
[ "zloy-zloy", "Мы с Алешей сегодня на иксбоксе рубились, потом в маке поели, потом ему новый телефон купили, и два часа с горок в Нескучном саду катались."],
["zloy-zloy", "У Алеши завтра день рождения."],
["zloy-zloy", "Он мой дед. Ему будет 81 год."],
["Вы", "LOL"]
];
let newMessages = [];
for (let i = 0; i < messages.length; i++){
let item = {};
item.author = messages[i][0];
item.text = messages[i][1];
newMessages.push(item);
}
console.log(newMessages);
Автор решения: Rudi
→ Ссылка
Можно воспользоваться методом reduce
let m = [
[ "zloy-zloy", "Мы с Алешей сегодня на иксбоксе рубились, потом в маке поели, потом ему новый телефон купили, и два часа с горок в Нескучном саду катались."],
["zloy-zloy", "У Алеши завтра день рождения."],
["zloy-zloy", "Он мой дед. Ему будет 81 год."],
["Вы", "LOL"]
];
let newMessages = m.reduce((prev,curr)=>{ prev.push({author:curr[0], text:curr[1]});return prev; },[]);
console.log(newMessages);