2013-06-18 2 views
3

Я сейчас создаю систему управления файлами для Интернета. Но у меня есть некоторые проблемы с массивом javascript.javascript массив в массиве

В системе есть возможность добавлять метки к файлам.
В javascript я хочу иметь идентификатор и значение меток с массивом fileId в 1 (как показано ниже). Я также хочу, чтобы FileId и LabelId не были индексом массива. Поскольку FileId и labelId могут быть очень большим числом. И тогда у меня есть массив, полный неопределенных элементов.

Вот пример того, как я хотел бы иметь его:

array[FileId][labelId,labelValue]

Если у вас есть решение, пожалуйста, помогите мне.

Спасибо.

ответ

1

Вы можете сформировать структуру, как это:

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

В основном, массив объектов. Каждый объект содержит два поля: идентификатор поля и метки. Ярлыки - это массив с объектами. Каждый объект имеет свойство идентификатора метки и метки.

код для создания новых элементов может быть таким:

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 является идентификатором, а индекс 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 
Смежные вопросы