數(shù)組展平就是將數(shù)組弄成一層
題目:var arr = [1,[2,3],[4,5,[6,7,8,[9,10]]]];將此數(shù)組展平
1.思路一:將數(shù)組轉(zhuǎn)化為字符串(toString),用split以逗號分割為數(shù)組,再通過遍歷將數(shù)組中的字符串用parseInt轉(zhuǎn)化為數(shù)組
代碼如下
var arr = [1,[2,3],[4,5,[6,7,8,[9,10]]]];
//將數(shù)組轉(zhuǎn)化為字符串
var str = arr.toString(arr);
//console.log(str);//1,2,3,4,5,6,7,8,9,10
//有逗號split切割為數(shù)組
var arr2 = str.split(",");
//console.log(arr2);//["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
//數(shù)組里的元素是字符串杏愤,要將字符串轉(zhuǎn)化為數(shù)值纯蛾,用parseInt()
for(var i=0;i<arr2.length;i++){
arr2[i]=parseInt(arr2[i]);
}
console.log(arr2);
2.思路二:定義一個空數(shù)組乙埃,用來存放最后的結(jié)果
運(yùn)用遞歸的思想令杈,定義一個函數(shù)叔汁,遍歷數(shù)組孙援,如果數(shù)組元素的類型typeof是“object”,那么再執(zhí)行一次此函數(shù),否則將元素push到新建的空數(shù)組中
代碼如下:
var arr=[1,[2,3],[4,5,[6,7,8,[9,10]]]];
var arr2=[];
function f(arr) {
for(var i=0;i<arr.length;i++){
if(typeof arr[i]=="object"){
f(arr[i]);
}else{
arr2.push(arr[i]);
}
}
return arr2;
}
f(arr);
console.log(arr2);