-
-
Save ecaepsey/c85769767cf0ed6ec21f0c17597998bc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Инициализируем массив-результат, в который запишутся все значения. | |
Итерируем (проходим) по основному массиву и проверяем текущий элемент. | |
Если текущий элемент — не массив, то добавляем его в массив-результат и идём дальше. | |
Если текущий элемент — массив, то начинаем вложенный цикл, внутри которого идём по массиву и добавляем каждый его элемент в массив-результат. | |
Возвращаем массив-результат. | |
*/ | |
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