【JS编程系列】数组扁平化

一、题目

题目:将以下数组扁平化,返回一个没有重复值且升序的数组

例子:

//输入:
 let arr = [
        [1, 2, 3],
        [3, 4, 5, 5],
        [6, 7, 8, 9, [11, 12, [12, 13]]],
      ];
 //输出:[1,2,3,4,5,6,7,8,9,11,12,13] 
 

二、解决方案

思路:1、先将数组扁平化;2、去重;3、排序

方法一:原生属性写法

 function flatten(arr) {
        let result = [];
        let len = arr.length;
        for (let i = 0; i < len; i++) {
          if (Array.isArray(arr[i])) {
            // concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
            result = result.concat(flatten2(arr[i]));
          } else {
            result.push(arr[i]);
          }
        }
        return Array.from(new Set(result));
      }

方法二:使用ES6的flat+new Set

function flatten(arr) {
        return Array.from(new Set(arr.flat(Infinity))).sort((a, b) => {
          return a - b;
        });
      }

你可能感兴趣的:(【JS编程系列】数组扁平化)