2013-01-04 125 views
1

我有以下代码:推多维数组的Javascript

data_array = { 
         full_name: 'fullname', 
         items: [], 
         address_full: 'address' 
        }; 

     first = { 
      'data-opPrice' : '1a', 
      'data-stdPrice' : '1b', 
      'state'   : '1c' 
     }; 
     second = { 
      'data-opPrice' : '2a', 
      'data-stdPrice' : '2b', 
      'state'   : '2c' 
     };   
     data_array.items.push(first); 
     data_array.items.push(second); 

    alert(data_array['items'][1].data-opPrice); 

我希望得到警报“2A”。但没有任何反应。为什么?

+0

是什么控制台说? –

+0

小提琴http://jsfiddle.net/nuclearghost/t9c7L/ –

回答

4

这是因为在data-opPrice-的。 -是减法。

alert(data_array['items'][1]['data-opPrice']); 

http://jsfiddle.net/t9c7L/1/

+0

哦,基督,我明白了。谢谢! – Inigo

1

你可能想:

data_array.items[1]['data-opPrice']; 
0

尝试

alert(data_array['items'][1]['data-opPrice']); 

,否则它是一个操作(数据减去 opPrice)

0

使用本:

data_array.items[1]['data-opPrice'] 
0

使用命名约定并且不对属性名称使用短划线(减号)。

因此遵循以下规则:http://javascript.crockford.com/code.html

,然后写这样的代码:

data_array = { 
        full_name: 'fullname', 
        items: [], 
        address_full: 'address' 
       }; 

    first = { 
     'dataOpPrice' : '1a', 
     'dataStdPrice' : '1b', 
     'state'   : '1c' 
    }; 
    second = { 
     'dataOpPrice' : '2a', 
     'dataStdPrice' : '2b', 
     'state'   : '2c' 
    };   
    data_array.items.push(first); 
    data_array.items.push(second); 

alert(data_array.items[1].dataOpPrice);