多重数组循环

bennman 2012-04-10 01:25:11
var arr=[[[[11,22],33],44],[55,66],77];
var arr2=[];
//......
console.log(arr2)
怎么让arr2的值等于11,22,33,44,55,66,77 注意arr为层数不确定的多重数组,可能是4重,5重,6重....
...全文
170 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
thiswolf 2013-06-14
  • 打赏
  • 举报
回复
递归效率慢啊,我的程序用递归和直接用循环嵌套运行时间相差10倍。
prototyper 2012-04-10
  • 打赏
  • 举报
回复
应该递归

Array.prototype.each = function() {
var ret = [];
(function(arr) {
for (var i = 0; arr[i]; i++) {
arr[i].constructor == Array ? arguments.callee(arr[i]) : ret.push(arr[i]);
}
})(this);
return ret
}

alert([[[[11, 22], 33], 44], [55, 66], 77].each())
bennman 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

JScript code
var arr=[[[[11,22],33],44],[55,66],77];
var arr2 = [];
function loop(arr)
{
var result =[];
for(var i = 0 ; i < arr.length ; i ++)
{
if(arr[i] instanceof Array) resu……
[/Quote]

递归的好,毕竟我要处理每一层的结果,谢谢各位!
Acesidonu 2012-04-10
  • 打赏
  • 举报
回复

<script type="text/javascript">
var arr=[[[[11,22],33],44],[55,66],77];
var arr2=arr.join(',').split(',');
alert(arr2);
</script>
上山浦鱼 2012-04-10
  • 打赏
  • 举报
回复
<script>
var arr=[[[[11,22],33],44],[55,66],77];
var arr2=[];
var item = arr;
var str = "";
while(item.lenght == 2) {
str = str + item[1] + ",";
item = item[0];
}
str = str + item + ",";

arr2 = str.split(",");
alert(str);
</script>

将上面SCRIPT复制,运行, 得到结果 11,22,33,44,55,66,77,
细节方面,自己处理..
峭沙 2012-04-10
  • 打赏
  • 举报
回复
		var arr = [[[[11,22],33],44],[55,66],77],
arr2 = [];
function cloneArray(target, source){
for(var i = 0, len = source.length; i < len; i++){
var el = source[i];
if(Object.prototype.toString.call(el) === "[object Array]"){
cloneArray(target, el);
}else{
target.push(el);
}
}
}
cloneArray(arr2, arr);
console.log(arr2);
挨踢直男 2012-04-10
  • 打赏
  • 举报
回复
var arr=[[[[11,22],33],44],[55,66],77];
var arr2 = [];
function loop(arr)
{
var result =[];
for(var i = 0 ; i < arr.length ; i ++)
{
if(arr[i] instanceof Array) result = result.concat(loop(arr[i]));
else result.push(arr[i]);
}
return result;
}
arr2 = loop(arr);
alert(arr2)
挨踢直男 2012-04-10
  • 打赏
  • 举报
回复
var arr=[[[[11,22],33],44],[55,66],77];
function loop(arr)
{
var result ="";
for(var i = 0 ; i < arr.length ; i ++)
{
if(arr[i] instanceof Array) result += loop(arr[i])
else result += arr[i].toString()+"<br/>";
}
return result;
}
document.write(loop(arr))

用递归
foolbirdflyfirst 2012-04-10
  • 打赏
  • 举报
回复
var arr2 = arr.toString().split(',');
foolbirdflyfirst 2012-04-10
  • 打赏
  • 举报
回复
arr.toString()不行么?

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧