JS fordimentional数组里面for循环

时间:2016-02-11 03:33:40

标签: javascript

所以,我有以下js:

var INFO = [];
var newMap = {}; 
function user_info(id,name,url,img){          
    newMap[id] = [name, url, img];
    return newMap ;   
}

...

for (var j = 0; j < 2; j++) {   
    INFO.push(user_info(a,b,c,d));                                  
}                   
alert(JSON.stringify(INFO, null, 4));               

然后,我得到以下结果:

enter image description here

我知道为什么会这样。因为newMap在第二个和第三个for循环运行之前没有被清空,并且被多次添加。

有人可以帮我解决此问题或解决此问题,以便只有如下所示的多重阵列:

enter image description here

我尝试执行以下操作:

var INFO = [];

function user_info(id,name,url,img){          
    var newMap = {}; 
    newMap[id] = [name, url, img];
    return newMap ;   
}

但是得到以下结果并不是我想要的结果:

enter image description here

这里的问题是所有实际的数组都在它自己的第二层内。

2 个答案:

答案 0 :(得分:1)

像那样:

function user_info(map, id,name,url,img){          
    map[id] = [name, url, img];
}

var INFO = [];
var newMap = {}; 
for (var j = 0; j < 2; j++) {   
    user_info(newMap, a,b,c,d)
}                   
INFO.push(newMap);

alert(JSON.stringify(INFO, null, 4));  

答案 1 :(得分:1)

我认为这就是你所需要的,尽管如果没有访问你的例子中的j,a,b,c,d变量就很难测试:

var INFO = [],
    data = {};
for (var j = 0; j < 2; j++) {
    data[a] = [b, c, d];                               
}
INFO.push(data);           
alert(JSON.stringify(INFO, null, 4));