JavaScript: выравнивание вложенного массива
Массив JavaScript: упражнение 21 с решением
Напишите программу на JavaScript, чтобы сгладить вложенный (любой глубины) массив. Если вы передадите мелко, массив будет сплющен только на один уровень.
Пример данных:
console.log (flatten ([1, [2], [3, [[4]]], [5,6]]));
[1, 2, 3, 4, 5, 6]
console.log (flatten ([1, [2], [3, [[4]]], [5,6]], true));
[1, 2, 3, [[4]], 5, 6]
Пример решения :
HTML-код:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Flatten a nested array</title>
</head>
<body>
</body>
</html>
Код JavaScript:
var flatten = function(a, shallow,r){
if(!r){ r = []}
if (shallow) {
return r.concat.apply(r,a);
}
for(var i=0; i<a.length; i++){
if(a[i].constructor == Array){
flatten(a[i],shallow,r);
}else{
r.push(a[i]);
}
}
return r;
}
console.log(flatten([1, [2], [3, [[4]]],[5,6]]));
console.log(flatten([1, [2], [3, [[4]]],[5,6]], true));
Пример вывода:
[1,2,3,4,5,6] [1,2,3, [[4]], 5,6]
Блок - схема:
Версия ES6:
const flatten = (a, shallow, r) => {
if(!r){ r = []}
if (shallow) {
return r.concat(...a);
}
for(let i=0; i<a.length; i++){
if(a[i].constructor == Array){
flatten(a[i],shallow,r);
}else{
r.push(a[i]);
}
}
return r;
};
console.log(flatten([1, [2], [3, [[4]]],[5,6]]));
console.log(flatten([1, [2], [3, [[4]]],[5,6]], true));
Демонстрация в реальном времени:
См. Pen JavaScript - Сглаживание вложенного массива - array-ex-21 с помощью w3resource ( @ w3resource ) в CodePen .
Улучшите этот пример решения и опубликуйте свой код через Disqus
Предыдущий: Напишите программу на JavaScript, чтобы найти повторяющиеся значения в массиве JavaScript.
Далее: Напишите программу на JavaScript для вычисления объединения двух массивов.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования