2012-01-25 42 views
0

我有这样的例子:如何在jQuery中的每个循环内在javascript中创建多维数组?

var name; 
var id; 
var array = []; 

$.each(data, function(index, element) { 
name = element.name; 
id = element.id; 
array[id] = name; 
<a href="#" onClick="myFunction(array)">send</a> 
console.log(array); 
}); 

在这种情况下.each将迭代的5倍和id将变得1, 2, 3, 4, 5name将改变为五个名字

我想创建多维数组或一个对象,该将看起来像这样:

[1:name1] for the first iteration 
[2:name2] for the second on 
... 

的每对值传递给函数myFunction 和函数内有访问阵列值:

功能myFunction的(阵列){// 提醒键和值 }

任何想法我怎么能做到这一点的情况?

+0

第一个代码示例有一堆HTML突然在它的中间,不会解析。你能澄清你想要做什么吗? –

+0

@Patriotccow - 考虑到“内部数组”的第一项作为标识符,您可能需要查看“关联数组”而不是多维。或者,由于您使用的是以1开头的数字,因此请使用标准的一维数组,并忽略零索引项目。 –

回答

5

目前尚不清楚你想要做什么,但如果你想在array每个条目可包含标识和名称的值的数组,你可以改变这一行:

array[id] = name; 

array[id] = new Array(id, name); 

但我可能不会使用一个数组,我可能只是使用对象:

array[id] = {id: id, name: name}; 

然后你就可以像这样访问:

x = array[id].name; 

事实上,确实array真正需要的是一个数组呢?如果没有,只让它作为一个对象:

data = {}; 

id键和name值:

data[id] = name; 

而且你这是怎么循环播放:

function myFunction(data) { 
    var id, name; 

    for (id in data) { 
     name = data[id]; 
     alert("id is " + id + ", name is " + name); 
    } 
} 

如果是单纯的这样的对象,没有必要,但是如果你正在循环的对象可能有一个原型,你只想看看对象的自己的属性:

function myFunction(data) { 
    var id, name; 

    for (id in data) { 
     if (data.hasOwnProperty(id)) { 
      name = data[id]; 
      alert("id is " + id + ", name is " + name); 
     } 
    } 
} 
相关问题