js展平一个数组

for循环递归

数组的concat方法会返回一个新数组

     let arr1 = [1,[2,3,[4]]];
     function flatten(arr) {
        let result = [];
        for (var i = 0; i < arr.length; i++) {
            if (Array.isArray(arr[i])) {  //判断是否是数组
                result = result.concat(flatten(arr[i]));  //自身递归与以前result合并,重新对result赋值
            } else { 
                result.push(arr[i]);  //直接追加
            }
        }
        return result
     }
     console.log(flatten(arr1));  // [1, 2, 3, 4]

reduce方法

     function flatten(arr) {
         return arr.reduce((prev,next) => {
            return prev.concat(Array.isArray(next) ? flatten(next) : next) //循环arr,每一项的返回值
         },[])
     }
            
     console.log(flatten(arr1));    // [1, 2, 3, 4]

你可能感兴趣的:(js展平一个数组)