需求:多維數(shù)組=>一維數(shù)組
let ary = [1, [2, [3, [4, 5]]], 6];
let str = JSON.stringify(ary);
第0種處理:直接的調(diào)用
1arr_flat = arr.flat(Infinity);
第一種處理
1ary = str.replace(/(\[\]))/g, '').split(',');
第二種處理
str = str.replace(/(\[\]))/g, '');
str = '['+ str + ']';
ary = JSON.parse(str);
第三種處理:遞歸處理
let result = [];
let fn = function(ary) {
? ? ?for(let i = 0; i < ary.length; i++) }{
? ? ? ? ? let item = ary[i];
? ? ? ? ? if(Array.isArray(ary[i])){
? ? ? ? ? ? ? ? ?fn(item);
? ? ? ? ? } else{
? ? ? ? ? ? ? ? ?result.push(item);
? ? ? ? ? ?}
? ? ?}
}
第四種處理:用 reduce 實(shí)現(xiàn)數(shù)組的 flat 方法
functionflatten(ary) {
? ? returnary.reduce((pre, cur) => {
? ? ? ? ?returnpre.concat(Array.isArray(cur) ? flatten(cur) : cur);
? ? })
}
let ary = [1, 2, [3, 4], [5, [6, 7]]]
console.log(ary.MyFlat(Infinity))
第五種處理:擴(kuò)展運(yùn)算符
while(ary.some(Array.isArray)) {
? ? ary = [].concat(...ary);
}