2013-06-18 75 views
3

我正在爲Web構建一個文件管理系統。 但我有一些問題與JavaScript數組的。陣列中的javascript數組

在系統中有機會向文件添加標籤。
在JavaScript中,我想要在1個數組中使用fileId的標識的ID和值(如下所示)。 我也希望FileId和LabelId不作爲數組的索引。因爲FileId和labelId可以是一個真正的高數字。然後我有一個數組充滿未定義的項目。

這裏我想怎麼有它的一個例子:

array[FileId][labelId,labelValue]

如果你有一個解決方案,請幫助我。

謝謝。

回答

1

可以形成結構是這樣的:

arr = [{FieldId:fid_value, Labels:[{labelId:lid_value, labelValue:label_text}]}] 

基本上,與對象的數組。每個對象都包含兩個字段:字段標識和標籤。 標籤也是一個包含對象的數組。每個對象都有標籤ID和標籤值屬性。

代碼來創建新的項目可能是這樣的:

arr = array(); 
fieldObj = {FieldId:fid_value, Labels:[]}; 
fieldObj.Labels.push({labelId:lid_value, labelValue:label_text}); 
fieldObj.Labels.push({labelId:lid_value, labelValue:label_text}); 
fieldObj.Labels.push({labelId:lid_value, labelValue:label_text}); 
... 
arr.push(fieldObj); 
+0

感謝這個摸索出適合我。 –

1

我不完全知道你是問什麼,但陣列中的陣列是可能的...

a = [] 
a.push('a') 

Result: 
["a"] 
a.push(['hello','world']) 

Result: 
["a", 
Array[2] 
    0: "hello" 
    1: "world" 
] 
0

你也可以使用一個對象

var data = {}; 
data["item1"] = { "labelId" : "foo1", "labelValue" : "bar1" }; 
data["item2"] = { "labelId" : "foo2", "labelValue" : "bar2" }; 
console.log(data.item1.labelId); 

有很多方法,你可以對物體進行結構化,但通常使用物體比記住索引0是ID和索引1是值更好。

0

使用時應使用對象和數組:

var root = [{ 
     id: '12345', 
     metadata: { 
      label: 'foo', 
     }, 
     type: 'folder', 
     name: 'Folder Name', 
     children: [...] 
    } 
]; 

現在,你可以通過在你的根文件夾和文件迭代:

for (var i = 0; i < root.length; i++) { 
    var item = root[i]; 

    console.log(item.type, item.name, item.id); 
} 
1

這聽起來像你想的對象,而不是數組:

var obj = {}; 

obj["fieldName"] = {label: "labelname", labelId: 1234}; 

然後你就可以訪問這些數據爲:

obj["fieldName"].label