数组展平就是将数组弄成一层
题目:var arr = [1,[2,3],[4,5,[6,7,8,[9,10]]]];将此数组展平
1.思路一:将数组转化为字符串(toString),用split以逗号分割为数组,再通过遍历将数组中的字符串用parseInt转化为数组
代码如下
var arr = [1,[2,3],[4,5,[6,7,8,[9,10]]]];
//将数组转化为字符串
var str = arr.toString(arr);
//console.log(str);//1,2,3,4,5,6,7,8,9,10
//有逗号split切割为数组
var arr2 = str.split(",");
//console.log(arr2);//["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
//数组里的元素是字符串,要将字符串转化为数值,用parseInt()
for(var i=0;i<arr2.length;i++){
arr2[i]=parseInt(arr2[i]);
}
console.log(arr2);
2.思路二:定义一个空数组,用来存放最后的结果
运用递归的思想,定义一个函数,遍历数组,如果数组元素的类型typeof是“object”,那么再执行一次此函数,否则将元素push到新建的空数组中
代码如下:
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);
网友评论