陣列的扁平化方法 Array.prototype.flat() 不支援
解決: 重新定義此方法到陣列物件的原型鏈上
/**
* 給陣列新增flat方法
*/
addMethodToArray() {
Array.prototype.flat = function(depth) {
// let arr = this.value; //讀不到
let arr = this; //陣列本身
let res = [],
depthArg = depth || 1,
depthNum = 0,
flatMap = arr => {
arr.map((element, index, array) => {
if (Object.prototype.toString.call(element).slice(8, -1) === 'Array') {
if (depthNum < depthArg) {
depthNum++;
flatMap(element);
} else {
res.push(element);
}
} else {
res.push(element);
if (index === array.length - 1) depthNum = 0;
}
});
};
flatMap(arr);
return res;
};
},
複製程式碼