2015-01-18 4 views
0

проведенное некоторое время и гугле, но я не могу показаться, чтобы добиться этого в Javascript:многомерный ассоциативный массив с именем индекса

PHP:

$items['01A']['price'] = "$30"; 
$items['01A']['description'] = "Description1"; 

$items['02B']['price'] = "$60"; 
$items['02B']['description'] = "Description2"; 

Выход:

Array 
(
    [01A] => Array 
     (
      [price] => $30 
      [description] => Description1 
     ) 

    [02B] => Array 
     (
      [price] => $60 
      [description] => Description2 
     ) 

) 

Хорошо, я могу, например:

var obj = { 
    '0113A5' : { 
     'price' : '1200', 
     'discount' : '5' 
    }, 
    '0213A5' : { 
     'price' : '1800', 
     'discount' : '0' 
    } 
}; 

... но присваивание значений внутри внешний вид не представляется возможным, потому что это:

obj['0313A5']['price'] = "2000"; 
//or 
obj.0313A5.price = "2000"; 

... выдает ошибку.

+0

'OBJ [ '0313A5'] [ 'цена'] = "2000";' прекрасно действует ... что ошибка вы видите? –

+0

@ gp. 'TypeError: Невозможно установить свойство« цена »неопределенного' – 3zzy

ответ

1

Вам нужно создать пустой объект до назначения свойств к нему, как этот

var obj = {}; 

obj['0113A5'] = {}; 
obj['0113A5'].price = '1200'; 
obj['0113A5'].discount = '5'; 


obj['0213A5'] = {}; 
obj['0213A5'].price = '1800'; 
obj['0213A5'].discount = '0'; 

Example

0
var obj = { 
      '0113A5' : { 
       'price' : '1200', 
       'discount' : '5' 
      }, 
      '0213A5' : { 
       'price' : '1800', 
       'discount' : '0' 
      } 
     }; 

obj['0113A5']['discount'] = '222'; 
alert(obj['0113A5']['discount']); 

obj['0113A5'].discount = '333'; 
alert(obj['0113A5']['discount']); 

Это действительно.

http://jsfiddle.net/9jq5esg2/

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