«

打平数组方法

时间:2023-8-29 10:56     作者:六思逸     分类: JavaScript


示例数据

let givenArr = [[1, 2, 2],[3, 4, 5, 5],[6, 7, 8, 9, [11, 12, [12, 13, [14]]]],10,];

降维方法

方法一

使用flat进行降维,但是需要知道数组是几维数组,不可能一个个数吧,所以我们这里用到了Infinity
Infinity:如果使用flat(Infinity) 其中参数是Infinity,那么整个数组,包括其所有嵌套的子数组,都将被扁平化。

代码

let obj = givenArr.flat(Infinity);
console.log(obj);

效果图

打平数组方法

去重与排序(拓展)

代码

// 去重 + 排序
let arr = [...new Set(obj.sort((a, b) => a - b))];
console.log(arr);

效果图

打平数组方法

方法二

使用join将数组转换为以逗号分隔的字符串,然后再用split将该字符串转换回数组

代码

let obj = givenArr.join(",").split(",");
console.log(obj);

效果图

打平数组方法

注意

这样转换后数组是字符串, 如果需要数字数组 可以遍历转换一下

代码

let obj = givenArr.join(",").split(",");  // 降维
let arr = obj.map((str) => Number(str)); // 转换为Number数组
console.log(arr); // 打印

效果图

打平数组方法

方法三

使用递归的方法实现

递归代码

      // 定义一个名为flattenArray的函数,它接受一个数组作为参数
      function flattenArray(arr) {
        // 创建一个空数组result,用于存储打平后的元素
        const result = [];

        // 定义一个名为flatten的函数,它接受一个数组作为参数
        function flatten(arr) {
          // 遍历数组中的每个元素,从索引0开始到数组末尾
          for (let i = 0; i < arr.length; i++) {
            // 检查当前元素是否是数组
            if (Array.isArray(arr[i])) {
              // 如果是数组,则递归调用flatten函数,继续打平该子数组
              flatten(arr[i]);
            } else {
              // 如果当前元素不是数组,则将其添加到result数组中
              result.push(arr[i]);
            }
          }
        }

        // 调用flatten函数,传入初始的arr参数
        flatten(arr);

        // 返回打平后的结果数组
        return result;
      }

使用代码

let obj = flattenArray(givenArr);
console.log(obj);

效果图

打平数组方法

标签: 打平数组的方法

版权所有:六思逸
文章标题:打平数组方法
除非注明,文章均为 六思逸 原创,转载请注明作者和出处 六思逸

扫描二维码,在手机上阅读

推荐阅读: