2016-08-01 4 views
1

Я пытался создать 2D-массив в javascript, но не имел большого успеха. Я вытаскиваю некоторые данные из БД, и тогда я хочу объединить некоторые поля в 2D-массив, чтобы использовать его в другом месте кода. В идеале я хочу закончить вверх с:Создание 2D-массива в Javascript

mapLocs = [ 
    ['name a','location a',1], 
    ['name b','location b',2], 
    ['name c','location c',3] 
] 

вот код, я использую, чтобы построить mapLocs массив:

for(i = 0;i < phtLen;i++){ 
     var x = i + 1; 
     var myLocs = new Array(myPhotogs[i].phtName,myPhotogs[i].phtLoc,x); 
     console.log(myLocs); 
     mapLocs[i] = new Array(myLocs); 
     } 
    } 

, который в значительной степени метод, который я собрал от чтения подобные проблемы здесь. console.log() выводит массив, состоящий из трех элементов, которые я хочу, но если я попытаюсь получить доступ к mapLocs, он, похоже, не состоит из трех массивов, как я и ожидал, но из трех элементов, каждый из которых состоит из трех элементов в массиве myLoc, если это имеет смысл? Итак:

console.log(mapLocs[0][0]); // Joe Bloggs, SW1A 1AA, 1 

, где я ожидал, что только 'Джо Пупкин' и

console.logs(mapLocs[0][1]); // undefined 

Что я делаю неправильно?

+2

Попробуйте изменить 'mapLocs [i] = new Array (myLocs);' to 'mapLocs [i] = myLocs;' –

+0

Вы также можете попробовать 'mapLocs [i] = [myPhotogs [i] .phtName, myPhotogs [i ] .phtLoc, x + 1] ' – Rajesh

+0

А! Блестящий, это работает! Спасибо огромное! – Drum

ответ

1

Явный новый конструктор Array() не принимает массив и делает новый массив идентичным массиву аргументов, но принимает список аргументов, которые вы хотите содержать в новом массиве. Таким образом, в строке

mapLocs[i] = new Array(myLocs) 

mapLocs [я] на самом деле быть установлен в

[[Joe Bloggs, SW1A 1AA, 1]] 

Вместо этого, можно сказать, что

mapLocs[i] = myLocs.slice() 

, который клонирует myLocs и поместить его в индекс я в mapLocs, в результате чего вы хотите.

+0

Я принял это как правильно, потому что это правильно (я попробовал), хотя я действительно пошел с предложением в первом комментарии под моим оригинальным сообщением. – Drum

+0

Спасибо в любом случае! Рад, что вы нашли свой ответ. – ingleback

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