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

Hợp nhất các mảng lồng nhau để tạo thành mảng 1-d trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript có hai mảng lồng nhau, arr1 và arr2, với đối số thứ nhất và đối số thứ hai.

Hàm của chúng ta phải tạo và trả về một mảng thứ ba chứa tất cả các phần tử của arr1 andarr2 nhưng được làm phẳng thành một chiều

Ví dụ:nếu đầu vào của hàm là -

const arr1 = [
   1, [
      2, [
         4, 5, [
            6
         ]
      ]
   ]
];
const arr2 = [
   11, 12, [
      16, 18, [
         19, 21, [
            23
         ]
      ]
   ]
];

Sau đó, đầu ra phải là -

const output = [1, 2, 4, 5, 6, 11, 12, 16, 18, 19, 21, 23];

Ví dụ

Sau đây là mã -

const arr1 = [
   1, [
      2, [
         4, 5, [
            6
         ]
      ]
   ]
];
const arr2 = [
   11, 12, [
      16, 18, [
         19, 21, [
            23
         ]
      ]
   ]
];
const flattenAndMerge = (arr1 = [], arr2 = []) => {
   const res = [];

   const flatten = (arr = []) => {
      for(let i = 0; i < arr.length; i++){
         if(Array.isArray(arr[i])){

            flatten(arr[i]);
         }else if(typeof arr[i] === 'number'){
            res.push(arr[i])
         };
      };
   };
   flatten(arr1);
   flatten(arr2);
   return res;
};
console.log(flattenAndMerge(arr1, arr2));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

[
   1, 2, 4, 5, 6,
   11, 12, 16, 18, 19,
   21, 23
]