2013-08-05 1 views
1

Я пытаюсь создать массив в JavaScript, который позволит мне получить доступ к данным, как это:Создание 2d ассоциативный массив JavaScript (такой же, как массив PHP ДООС)

var name = infArray[0]['name']; 

однако я не могу показаться, чтобы получить что-нибудь работать таким образом. Когда я передал массив-член от php к javascript, используя json_encode, он структурировал данные таким образом. Причина, по которой я сделал это, так что я могу передать данные в том же формате на php, чтобы выполнить запрос sql update.

+0

Если вы просто 'serialize' массива, передать его другой PHP файл, а затем' unserialize' это, вы будете иметь более легкое время этого. Промежуточное преобразование Javascript не представляется необходимым. – DevlshOne

+0

@DevlshOne: JSON также является сериализационным форматом, просто другим. –

+0

Я не совсем понимаю, что вы имеете в виду, у меня есть 2 массива, содержащие информацию, которую мне нужно передать обратно в php с идентификатором из массива информации, извлеченного из php? –

ответ

4

JavaScript не имеет ассоциативных массивов. Он имеет (числовые) массивы и объекты.

Что вы хотите - это сочетание обоих. Что-то вроде этого:

var infArray = [{ 
    name: 'Test', 
    hash: 'abc' 
}, { 
    name: 'something', 
    hash: 'xyz' 
}]; 

Тогда вы можете получить доступ к нему, как вы показываете:

var name = infArray[0]['name']; // 'test' 

или используя точечную нотацию:

var name = infArray[0].name; // 'test' 
+0

Огромное спасибо за все ваши ответы, застряли на этом слишком долго (угадайте, что сон необходим). Как бы вы сделали это так, чтобы он был пустым, а затем вы можете заполнить его в цикле for? –

+0

Рад, что я мог бы помочь! :-D –

0

JavaScript не имеет ассоциативный массивы. Все, что угодно, для любого объекта, объявленного как obj['somthing'], равно obj.something - и это свойство. Более того, в массивах это может быть немного вводить в заблуждение, поэтому любое добавленное свойство не изменит набор массивов try obj.length.

2

var infArray = [{name: 'John'}, {name: 'Greg'}] просто ;-)

0

JavaScript не имеют 2D ассоциативный массив как таковой. Но 2d ассоциативный массив может быть реализован с помощью кода ниже:

var myArr = { K1: { 
    K11: 'K11 val', 
    K12: 'K12 Val' 
    }, 
    K2: { 
    K21: 'K21 Val', 
    K22: 'K22 Val' 
    } 
}; 
alert(myArr['K1']['K11']); 
alert(myArr['K1']['K12']); 
alert(myArr['K2']['K21']); 
alert(myArr['K2']['K22']);