lavezzi1
@lavezzi1

Как лучше всего использовать вложенные лупы?

Получаю список массив items, каждый item в свою очередь имеет свой массив. Задача в том, что нужно пробежать по items и вытащить из каждого item содержимое массива и сложить их все в один общий. То есть создать плоскую структуру. Можно пойти простым путем и сделать с помощью двух for.

Вопрос, как с новым синтаксисом es6-7 сделать это красивее?
  • Вопрос задан
  • 203 просмотра
Решения вопроса 1
boratsagdiev
@boratsagdiev
Для полного flat'а вложенных массивов:

const flattenArr = (arr) => {

	const flatArray = [];
	const parseArray = (arr) => {
		arr.forEach(item => Array.isArray(item) ? parseArray(item) : flatArray.push(item))
	}
	parseArray(arr)

	return flatArray
}


jsbin.com/guyisequwa/edit?js,console
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
https://github.com/lodash/lodash/blob/b506174410fa...

https://lodash.com/docs/4.17.4#flattenDeep

Вопрос, как с новым синтаксисом es6-7 сделать это красивее?

как обычно, ничего не меняется в программировании на таком базовом уровне.
Даже если навернуть сахарку сверху нового, под капотом будет всё тоже самое.
Так зачем делать магию, если достаточно обычного очевидного способа?
Ответ написан
Комментировать
@GreatRash
var arr = [
  ["aaa 1", "bbb 1", "ccc 1", "ddd 1"],
  ["aaa 2", "bbb 2", "ccc 2", "ddd 2"],
  ["aaa 3", "bbb 3", "ccc 3", "ddd 3"],
  ["aaa 4", "bbb 4", "ccc 4", "ddd 4"]
];

var flattenArr = [].concat.apply([], arr);

console.log(flattenArr);
Ответ написан
Комментировать
@kulaeff
Front-end developer
С es6 это просто:

var items = [
  ["a1", "b1", "c1", "d1"],
  ["a2", "b2", "c2", "d2"],
  ["a3", "b3", "c3", "d3"],
];

const flattened = items.reduce((a, b) => a.concat(b))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы