前端算法合集-2(含面试题-美团一面)

时间:2024-10-22 08:03:15

主要考察的就是数组扁平化,由浅入深吧

①利用tostring()和split()

let arr = [1, 2, 3, [4, 5, 6], [7, 8, [9, 10, 11], 12], [13, 14, 15]]
let newarr=arr.toString().split(',')
let numarr=newarr.map((item)=>{
    item=Number(item)
    return item
})
console.log(numarr)

②利用es6 flat()

ok,现在来练习力扣

如果不限制flat用法:

var flat = function (arr, n) {
    return arr.flat(n)
};

如果限制:

let arr = [1, 2, 3, [4, 5, 6], [7, 8, [9, 10, 11], 12], [13, 14, 15]]
var flat = function (arr, n) {
    while (n > 0 && arr.some(Array.isArray)) {// arr.some(Array.isArray)判断arr里是否还含有数组
      arr = [].concat(...arr);//扩展运算符...会将数组arr拆分成一个个独立的元素,...arr将数组展开为1, [2, 3], 4。
      //[].concat(...arr)会得到新数组[1, 2, 3, 4]。
      n--;
    }
    return arr;
  };
作者:__sgf__ 链接:https://leetcode.cn/problems/flatten-deeply-nested-array/solutions/2286164/2625-bian-ping-hua-qian-tao-shu-zu-cong-b9vg5/ 来源:力扣

 下面看一个示例回顾和理解concat(concat方法作用使用该方法的时候,它会创建一个当前数组的副本,然后将接受到的参数添加到该数组的末尾。)