經典面試題,專案中用js陣列操作的地方很多,js陣列扁平化是其中一種
陣列扁平化就是將乙個多維陣列轉換為乙個一維陣列實現基本方式
1、對陣列的每一項進行遍歷。
2、判斷該項是否是陣列。
3、如果該項不是陣列則將其直接放進新陣列。
4、是陣列則回到1,繼續迭代。
5、當陣列遍歷完成,返回這個新陣列。
array.prototype.
flatten
=function()
else
}return resultarr;
}var arr=[1
,2,3
,[4,
5,'hello',[
'world',9
,666]]
]console.
log(arr.
flatten()
)//[1, 2, 3, 4, 5, "hello", "world", 9, 666]
array.prototype.
flatten
=function()
,);}
function
*itertree
(tree)
}else
}let arr1 =[1
,2,[
'a',
'b',
['中'
,'文',[
1,2,
3,[11
,21,31
]]]]
,3];
let list=
for(
const x of
itertree
(arr1)
) console.
log(list)
;//[1, 2, "a", "b", "中", "文", 1, 2, 3, 11, 21, 31, 3]
let arr1 =[1
,2,[
'a',
'b',
['中'
,'文',[
1,2,
3,[11
,21,31
]]]]
,3];
console.
log( arr1.
flat
(infinity))
;
//es6 增加了擴充套件運算子,用於取出引數物件的所有可遍歷屬性,拷貝到當前物件之中:
var arr =[1
,[2,
[3,4
]]];
console.
log(
.concat
(...arr));
// [1, 2, [3, 4]]
//我們用這種方法只可以扁平一層,但是順著這個方法一直思考,我們可以寫出這樣的方法:
// 改進
var arr =[1
,[2,
[3,4
]]];
function
flatten
(arr)
return arr;
}console.
log(
flatten
(arr)
)
js 陣列扁平化
陣列扁平化是指將乙個多維陣列變為一維陣列 遍歷陣列arr,若arr i 為陣列則遞迴遍歷,直至arr i 不為陣列然後與之前的結果concat 遍歷陣列每一項,若值為陣列則遞迴遍歷,否則concat。function flatten arr 1,2,3,4,5 1,2,3,4,5 2.1.reduc...
js陣列扁平化
所謂陣列扁平化,就是將乙個二維或多維陣列轉換為一維陣列。比如將 1,2 3,4,5 轉化為 1,2,3,4,5 1 首先想到設定乙個空陣列,如果原陣列中的每一項不是陣列,直接push進去,如果是陣列,就與這個空陣列進行連線 實現 let flatarr arr else return result ...
JS 陣列扁平化
假如有乙個陣列 var arr 1,2,3,4 我們怎麼能把arr變成 1,2,3,4 呢?即讓多維陣列降維,轉換為只有一層的陣列。1.迴圈陣列 遞迴 function flatten arr else return result flatten arr 1,2,3,4 var arr 1 2,3,...