2016-08-17 2 views
-1

Я пытаюсь определить массив, который работает следующим образом:Как определить jagged ассоциативный массив в javascript?

myArray[0] = 'Volkswagen' 
myArray[0][0] = 'Crossfox' 
myArray[1] = 'Ford' 
myArray[1][0] = 'Focus' 

я могу сделать вручную, но, конечно, это не способ сделать это. У меня есть простой массив с этим:

arrayVolks = ['Crossfox', 'Up', 'Golf']; 
arrayVolks[name] = 'Volkswagen'; 

Моя проблема заключается в том, что я не знаю, как создать первый массив с индексом с именем массива и затем добавить в массив.

Я думал, на какой-то мере, как это:

var myArray = [ arrayVolks[name]: {arrayVolks} ] 

(код сразу над ним больше похоже на псевдокоде, чем фактический JavaScript)

возможно ли это?

Спасибо относительно

ответ

1

Вы не можете создать массив, как это в JavaScript:

myArray[0] = 'Volkswagen' 
myArray[0][0] = 'Crossfox' 
myArray[1] = 'Ford' 
myArray[1][0] = 'Focus' 

как об использовании Object вместо этого?

var obj = {}; 
obj['Volkswagen'] = ['Crossfox', 'Up', 'Golf']; 
obj['Ford'] = ['Focus']; 

// get all brands 
console.log(Object.keys(obj)); 

// print all "Volkswagen" 
console.log(obj['Volkswagen']); 
console.log(obj.Volskwagen); 
+0

Am я в состоянии использовать (OBJ) .Length Object.keys? Я знаю, что это работает, но это правильный способ сделать это? (для доступа к длине) – Yacomini

+0

В соответствии с этим: http://stackoverflow.com/a/4889658/2048417 - да. Но имейте в виду, что 'Object.keys' не работает в IE9. – pwolaq

1

Ящурный массив представляет собой массив массивов.

Пользуясь myArray[0] = 'Volkswagen', вы устанавливаете первый элемент корневого массива в строку, чтобы вы уже нарушали структуру.

Альтернативная структура данных, вероятно, будет лучше, но если вы хотите иметь зубчатый массив, вы можете определить структуру, в которой первым элементом каждого вложенного массива является make, тогда как другие элементы будут моделями.

var cars = [ 
 
    ['Volkswagen', 'Crossfox'], 
 
    ['Ford', 'Focus'] 
 
]; 
 

 
console.log(cars[0][0]); //Volkswagen 
 
console.log(cars[0][1]); //Crossfox

+0

Я запрограммировал в php, поэтому, наверное, я ошибался, как это работает в javascript. – Yacomini

+1

@Yacomini FYI - эквивалент ассоциативных массивов в JavaScript - это простые объекты. – plalx

Смежные вопросы