Действия с многомерным массивом
Здравствуйте!
У меня есть многомерный массив: 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, время: 18:47. |