关于javascript:数组展平

30次阅读

共计 718 个字符,预计需要花费 2 分钟才能阅读完成。

一般二维数组

// 第一种办法 concat
fattenOnce(arr){return [].concat(...arr)
}

// 第二种办法 toString 数据类型会被扭转成字符串
fattenOnce(arr){return arr.toString().split(',')
}

// 第三种办法 reduce 
fattenOnce(arr){return arr.reduce((newArray, currentValue, currentIndex, arr) => newArray.concat(...currentValue),[])
}

多维数组展平 递归

// 第一种办法 concat
fattenOnce(arr){return [].concat(...arr.map(item => Array.isArray(item) ? fattenOnce(item) : item))
}

// 第二种办法 toString 数据类型会被扭转成字符串
fattenOnce(arr){return arr.toString().split(',')
}

// 第三种办法 reduce 
fattenOnce(arr){return arr.reduce((newArray, currentValue) => Array.isArray(currentValue) ? fattenOnce(currentValue) : currentValue,[])
}

// 函数生成器
function* flattenOnce(arr) {for(let i = 0;i < arr.length; i++) {if(Array.isArray(arr[i])) {yield * flatten(arr[i])
    } else {yield arr[i]
    }
  }
}

正文完
 0