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

У меня есть код [ 1, 2, 3, fn(), 7, 8 ]

fn делает следующее:

fn(){ return [ 5, 6 ] }

К какому оператору обратиться по fn() звонку, чтобы получить:

[ 1, 2, 3, 5, 6, 7, 8 ]

вместо:

[ 1, 2, 3, [ 5, 6 ], 7, 8 ]

Конечно можно сделать:

[ 1, 2, 3, fn(), 7, 8 ].flat()

Но в этом случае сплющиваются и другие элементы. Мне нужно сгладить Только для fn()

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
59
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

При вызове fnраспространение в создаваемый вами массив:

const fn = () => [ 5, 6 ];

const arr = [ 1, 2, 3, ...fn(), 7, 8, [9, 10]]
console.info(arr);

flatMap() возвращает значения функции обратного вызова для каждого элемента входного массива в виде массива, который затем возвращается сведенным. Например, обратный вызов может возвращать следующее:

  • Один к одному: вернуть [стоимость]
  • Один к одному: вернуть [ ]
  • Один ко многим: возврат [стоимость, стоимость -5, произвольное значение]

В демонстрации, если значение является массивом, оно будет возвращено как есть, иначе оно будет возвращено внутри массива. По сути, все значения будут возвращены из обратного вызова в виде массива, который, в свою очередь, будет сглажен.

const fn = () => [5, 6];

let array = [1, 2, 3, 4, fn(), 7, 8];

const result = array.flatMap(node => Array.isArray(node) ? node : [node]);

console.info(result);

Мне нужно сглаживание только для fn(). Не желательно flat второй элемент, если это [2]

Eugen Konkov 06.07.2019 16:22

Другие вопросы по теме