js题目(嵌套数组)的思路与解法
2011-08-29 20:15 starlightliu 阅读(753) 评论(0) 收藏 举报题目:假如定义一个嵌套数组
x = [1,[2,3,[4,5]],6,[7]];
要求定义一个函数fun(arr,num),返回如下结果
fun(x,1):[1,6]
fun(x,2):[2,3,7]
fun(x,3):[4,5]
思路:将x想象成一个盒子,中括号想象成外壳,每次剥离最外面的外壳,然后输出没有外壳包裹的数字。
要点:判断是否有外壳(是否是数组)
function isArray(o){
return Object.prototype.toString.call(o) === '[object Array]';
}
解法:
x = [1,[2,3,[4,5]],6,[7]];
function isArray(o){
return Object.prototype.toString.call(o) === '[object Array]';
}
function test(a,n){
var t1 = t2 = a,
res,
length;
while(n--){
res = [];
t1 = t2;
t2 = [];
length = t1.length;
for(var i = 0;i<length;i++){
if(isArray(t1[i])){
t2 = t2.concat(t1[i]);
} else {
res.push(t1[i]);
}
}
}
return res;
}
alert(test(x,1));
alert(test(x,2));
alert(test(x,3));
浙公网安备 33010602011771号