Рубрики
Без рубрики

Как сгладить массив в JavaScript

Практическое руководство по выравниванию массивов JavaScript

ES2019 ввел два новых метода в прототип массива: плоский и Плоская карта . Они оба очень полезны для того, что мы хотим сделать: сгладить массив .

Давайте посмотрим, как они работают.

Но сначала хочу предупредить: только Firefox 62+, Chrome 69+, Edge 76+ и Safari 12+ уже поддерживают эти 2 метода, так как они появились сравнительно недавно. Проверьте текущую поддержку браузера и помните, что вы можете использовать Babel для переноса кода в предыдущую версию ES, если вам нужна поддержка старых браузеров.

Если вы не хотите иметь дело с Babel, и у вас еще нет этапа сборки, возможно, имеет смысл использовать flatten() , flattenDeep() и сгладить глубину() функции, предоставляемые Lodash.

Самое замечательное в Lodash то, что вам не нужно импортировать всю библиотеку целиком. Вы можете использовать эти функции по отдельности, используя эти пакеты:

Вот как сгладить массив с помощью lodash.сгладить :

const flatten = require('lodash.flatten')

const animals = ['Dog', ['Sheep', 'Wolf']]

flatten(animals)
//['Dog', 'Sheep', 'Wolf']

Давайте теперь поговорим о родной квартире( ) и flatMap() методы JavaScript теперь.

квартира () – это новый метод экземпляра массива, который может создавать одномерный массив из многомерного массива.

Пример:

['Dog', ['Sheep', 'Wolf']].flat()
//[ 'Dog', 'Sheep', 'Wolf' ]

По умолчанию он “выравнивается” только до одного уровня.

Вы можете добавить параметр в flat() , чтобы задать количество уровней, на которые вы хотите выровнять массив.

Установите его на Бесконечность иметь неограниченное количество уровней:

['Dog', ['Sheep', ['Wolf']]].flat()
//[ 'Dog', 'Sheep', [ 'Wolf' ] ]

['Dog', ['Sheep', ['Wolf']]].flat(2)
//[ 'Dog', 'Sheep', 'Wolf' ]

['Dog', ['Sheep', ['Wolf']]].flat(Infinity)
//[ 'Dog', 'Sheep', 'Wolf' ]

Если вы знакомы с методом JavaScript map() массива, вы знаете, что с его помощью вы можете выполнить функцию для каждого элемента массива.

Если нет, проверьте мой учебник по JavaScript map().

flatMap() – это новый метод прототипа массива, который объединяет flat() с map() . Это полезно при вызове функции, которая возвращает массив в обратном вызове map() , но вы хотите, чтобы полученный массив был плоским:

['My dog', 'is awesome'].map(words => words.split(' '))
//[ [ 'My', 'dog' ], [ 'is', 'awesome' ] ]

['My dog', 'is awesome'].flatMap(words => words.split(' '))
//[ 'My', 'dog', 'is', 'awesome' ]

Оригинал: “https://flaviocopes.com/javascript-flatten-array/”