Действия с многомерным массивом
Здравствуйте!
У меня есть многомерный массив:
const arr = [
['a1', 'a2', 'a3', 'a4', 'a5'],
['b1', 'b2', 'b3'],
['c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7'],
['d1']
];
Его можно как то автоматически объединить в один общий массив (сделать конкатенацию)? Сейчас каждый "подмассив" приходится прописывать вручную вот так: let concatArr = arr[0].concat(arr[1], arr[2], arr[3]); Можно ли это как то сделать по другому, чтобы при добавлении нового "подмассива" в массив arr, не нужно было его дописывать и в это выражение? |
|
рони, круто - то что нужно.
Спасибо! |
Нужна помощь.
Мой многомерный массив из переменной стал свойством объекта и теперь появились проблемы.
const test = {
arr: [
['a1', 'a2', 'a3', 'a4', 'a5'],
['b1', 'b2', 'b3'],
['c1', 'c2', 'c3', 'c4', 'c5'],
['d1', 'd2'],
['e1', 'e2', 'e3', 'e4']
],
save() {
console.log(this.arr[2]); // → ['c1', 'c2', 'c3', 'c4', 'c5']
console.log(this.arr[3]); // → undefined
this.arr[0].concat(this.arr[1], this.arr[2]).forEach(el => el); // Проходит
this.arr[3].forEach(el => el); // Выдаёт ошибку
},
event() {
document.querySelector('#save').addEventListener('click', this.save.bind(this));
}
}
test.event();
Наверное я неправильно обращаюсь к массиву. В консоле ошибка: Uncaught TypeError: Cannot read property 'forEach' of undefined - Невозможно прочитать свойство 'forEach' из неопределенного. Подскажите пожалуйста, где я нарукожопил? |
MC-XOBAHCK,
не могу получить ваши ошибки, код рабочий. |
рони, Вы меня извините за суету, я нашёл ошибку.
Причина - синтаксическая ошибка. Между массивами [3] и [4] пропустил запятую. Я перед тем как просить о помощи просидел в поиске ошибки 1,5 часа и столько же после вопроса. Вот только нашёл. Синтаксис этого массива проверял тщательно несколько раз. Как не увидел что запятой нету, не пойму. |
Цитата:
let concatArr = [].concat(...arr); |
Malleys, именно такой вариант синтаксиса искал изначально, но не разобрался в доках. Я полгода не использовал '...' и подзабыл синтаксис его применения. Зато теперь и это вспомнил и про flat узнал.
Спасибо! |
| Часовой пояс GMT +3, время: 19:35. |