成长(12/2000)——面试题合集9

扁平化数组

  • 即将数组展开,例如[1,[2,[3]]]转化为[1,2,3];

实现方式

1.es6方法:flat
arr.flat(Infinity);

2.正则
JSON.stringify(arr).replace(/[|]/g,'').split(',');
缺点:数据类型都会变为字符串
改良版:
JSON.parse('[' + JSON.stringify(arr).replace(/[|]/g,'') + ']')

3.递归

let arr = [1,[2,[3]]]
const result = [];
const fn = arr => {
    for (let index = 0; index < arr.length; index++) {
        if(Array.isArray(arr[index])){
            fn(arr[index]);
        }else{
            result.push(arr[index])
        }
        
    }
}
fn(arr);

4.reduce

let arr = [1,[2,[3]]]
let flatten = arr => {
   return arr.reduce( (pre, cur)=>{
    console.log('1',pre, cur)
       return pre.concat(Array.isArray(cur)?flatten(cur):cur);
   },[])
}

const res = flatten(arr);

你可能感兴趣的:(成长(12/2000)——面试题合集9)