Computer >> Máy Tính >  >> Lập trình >> Javascript

Làm thế nào để xử lý mảng lồng nhau trong JavaScript và hiển thị thứ tự các số theo cấp độ tối đa mà chúng được lồng vào nhau?

Giả sử, chúng ta có một mảng số lồng nhau như thế này -

const arr =[23, 6, [2, [6,2,1,2], 2], 5, 2];

Chúng tôi được yêu cầu viết một chương trình in các số (phần tử) của mảng này ra màn hình.

Thứ tự in của các số phải theo cấp độ tối đa mà chúng được lồng vào nhau. Do đó, đầu ra cho đầu vào ở trên sẽ giống như thế này -

23
6
   2
      6
      2
      1
      2
   2
5
2

Ví dụ

Mã cho điều này sẽ là -

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf−8">
   <meta name="viewport" content="width=device−width">
   <title>PATTERN</title>
</head>
<body>
   <script>
      const arr = [23, 6, [2, [6, 2, 1, 2], 2], 5, 2];
      arr.reduce(function iter(level) {
         return function (node, item) {
            var pTag = document.createElement('p');
            pTag.style.marginLeft = level + 'px';
            node.appendChild(pTag);
            if (Array.isArray(item)) {
               item.reduce(iter(level || 50), pTag);
            } else {
               pTag.appendChild(document.createTextNode(item));
            }
            return node;
         };
      }(0), document.body);
   </script>
   <p></p>
</body>
</html>

Và kết quả trên màn hình sẽ là -

Làm thế nào để xử lý mảng lồng nhau trong JavaScript và hiển thị thứ tự các số theo cấp độ tối đa mà chúng được lồng vào nhau?