SOURCE

/**
 * @author xuxuxuxu
 * @description 简单重写flat函数
 * @param {Number} deep 可选默认1 扁平化的深度 
 * @return {Array} 返回扁平化后的数组
 */
Object.prototype.flat = function(deep) {
	if (deep <= 0 || !this.find(item => Array.isArray(item))) return this;
	else if (!deep || deep == 1) {
		return this.reduce((pre, cur) => {
			return pre.concat(cur);
		}, []);
	} else if (deep > 1) {
		return this.reduce((pre, cur) => {
			if(Array.isArray(cur)) return pre.concat(cur.reduceflat(deep - 1));
			else return pre.concat(cur);
		}, [])
	}
}

let arr = [1, 2, [3, 4], [2, 1, [2, 3]]];
console.log(arr.flat());
console.log(arr.flat(0));
console.log(arr.flat(Infinity));
console 命令行工具 X clear

                    
>
console