кодесурса
«JavaScript

JavaScript: выравнивание вложенного массива

script1adsense2code
script1adsense3code

Массив 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code