美文网首页
js实现数组扁平化

js实现数组扁平化

作者: lwz4070 | 来源:发表于2018-09-15 11:14 被阅读0次

js实现数组扁平化

数组的扁平化,就是将一个嵌套多层的数组array(嵌套可以是任何层数)转换为只有一层的额数组。
如:
var arr = [3,5,[7,3,[22,11],6],4];
//扁平化后:[3, 5, 7, 3, 22, 11, 6, 4]

  • 法一 递归实现
  var arr = [3,5,[7,3,[22,11],6],4];
        //法一 递归
        function flatten1(arr) {
            var newArr = [];
            for(var i = 0; i < arr.length; i++) {
               //if(Array.isArray(arr[i])) { 或
                if(typeof arr[i] == 'object') {
                 newArr =  newArr.concat(arguments.callee(arr[i]));
                 //或 newArr = newArr.concat(flatten1(arr[i]));
               } else {
                  newArr.push(arr[i]);
               }
            }
            return newArr;
        }
        console.log(flatten1(arr));// [3, 5, 7, 3, 22, 11, 6, 4]
  • 法二 reduce方法
 //法二  reduce方法
       function flatten2(arr) {
          return arr.reduce(function(prev, item) {
            return prev.concat(typeof item == 'object' ? flatten2(item) : item);
          }, []);
       }
      console.log(flatten2(arr));
  • 法三 toString方法
//法三 toString方法
      //如果数组的元素都是数字,那么我们可以考虑使用 toString 方法 
      function flatten3(arr) {
        return arr.toString().split(',').map(function(item) { //toString之后再split转成数组,并将其转换回数字:
           return +item; //将字符串转为数字
        })
      }
      console.log(flatten3(arr));
  • 法三 ES6扩展运算符
 //法四 ES6扩展运算符
      function flatten4(arr) {
        while(arr.some(item =>Array.isArray(item))){
            arr = [].concat(...arr);
        }
        return arr;
      }
      flatten4(arr);
  • 由于扩展运算符一次只能展开一层数组:
var arr = [1, [2, [3, 4]]];
console.log([].concat(...arr)); // [1, 2, [3, 4]]

相关文章

  • js实现数组扁平化

    js实现数组扁平化 数组的扁平化,就是将一个嵌套多层的数组array(嵌套可以是任何层数)转换为只有一层的额数组。...

  • 5种方式实现数组扁平化

    5种方式实现数组扁平化 数组扁平化概念 数组扁平化是指将一个多维数组变为一维数组 实现 1. reduce 遍历数...

  • JS 数组扁平化的5种方式

    什么是数组扁平化 数组扁平化是指将一个多维数组变为一维数组 数据准备 实现方法一 实现方法二 实现方法三 实现方法...

  • 手撕常见面试题

    DOM 事件代理 数组 对象 扁平化 去重 - unique() 拷贝 浅拷贝 深拷贝 copy()函数实现 JS...

  • 【面试题】JS实现数组扁平化处理,妙不可言啊!

    JS实现数组扁平化处理 点击打开视频讲解更加详细[https://www.bilibili.com/video/B...

  • 手写代码系列

    深拷贝 html转码 手写promise.all 有哪些实现数组扁平化的方法 原生js 运用flat方法 redu...

  • 5种方式实现数组扁平化

    数组扁平化概念 数组扁平化是指将一个多维数组变为一维数组 实现 1. reduce 遍历数组每一项,若值为数组则递...

  • 数组扁平化

    数组扁平化概念 数组扁平化是指将一个多维数组变为一维数组 实现 1. reduce 遍历数组每一项,若值为数组则递...

  • js经典算法记录

    随机数组洗牌 简单的日期字符串排序 递归实现数组扁平化 极简版数组扁平化 记录数组项重复次数 冒泡排序 快速排序(...

  • js数组与对象常用操作方法

    一、Js相关数组操作 数组去除相同的 数组添加数数据 数组反转 打乱数组排序 取数组的前几个 数组扁平化 遍历对象...

网友评论

      本文标题:js实现数组扁平化

      本文链接:https://www.haomeiwen.com/subject/ocmzgftx.html