Skip to content

Instantly share code, notes, and snippets.

@ecaepsey
Created April 21, 2020 12:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ecaepsey/c85769767cf0ed6ec21f0c17597998bc to your computer and use it in GitHub Desktop.
Save ecaepsey/c85769767cf0ed6ec21f0c17597998bc to your computer and use it in GitHub Desktop.
/*
Инициализируем массив-результат, в который запишутся все значения.
Итерируем (проходим) по основному массиву и проверяем текущий элемент.
Если текущий элемент — не массив, то добавляем его в массив-результат и идём дальше.
Если текущий элемент — массив, то начинаем вложенный цикл, внутри которого идём по массиву и добавляем каждый его элемент в массив-результат.
Возвращаем массив-результат.
*/
const flatten = (coll) => {
const result = [];
for (const item of coll) {
// Array.isArray — функция-предикат стандартной библиотеки,
// которая проверяет, является ли значение массивом.
// См. ссылку на документацию в разделе "Дополнительные материалы".
if (Array.isArray(item)) {
for (const subItem of item) {
result.push(subItem);
}
} else {
result.push(item);
}
}
return result;
};
console.log(flatten([3, 2, [], [3, 4, 2], 3, [123, 3]]));
// => [ 3, 2, 3, 4, 2, 3, 123, 3 ]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment