2012-01-25 66 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); 
     } 
    } 
} 
相關問題