【前端】数组扁平化处理(约212字)

数组扁平化处理

实现一个flatten方法,使得输入一个数组,该数组里面的元素也可以是数组,该方法会输出一个扁平化的数组

    function flatten(arr){
      return arr.reduce(function(prev,item){
          return prev.concat(Array.isArray(item)?flatten(item):item);
      },[]);
    }

除了使用reduce方法,还可以使用递归和ES6的扩展运算符等方式来实现数组的扁平化处理。

  1. 递归方式:
    function flatten(arr) {
      var result = [];
      arr.forEach(function(item) {
        if (Array.isArray(item)) {
          result = result.concat(flatten(item));
        } else {
          result.push(item);
        }
      });
      return result;
    }
  1. 使用ES6的扩展运算符:
    function flatten(arr) {
      while (arr.some(Array.isArray)) {
        arr = [].concat(...arr);
      }
      return arr;
    }

这些方法都可以将多层嵌套的数组扁平化成一个一维数组。使用递归方法时,通过遍历数组的每个元素,如果元素是数组,则递归调用扁平化函数;如果元素不是数组,则直接添加到结果数组中。使用ES6的扩展运算符时,通过不断地展开数组中的每个元素,直到所有元素都不再是数组为止。

THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容