使用var键将[DataObject]添加到现有数组

时间:2016-01-26 22:06:44

标签: javascript arrays

使用Cordova,我试图将一个Object添加到一个数组中。我使用以下方法在节点JS上工作: theData = {[varkey]:DataObject};

但是我无法在我的运行中的javascript中以相同的方式工作。

我需要做以下事情:

var TownName = 'Auckland', var townData = (JSON Data);
theArray = new Array();

theArray[TownName] = townData;

我需要能够将其称为:

theArray['Auckland'] 

将返回(JSON数据)

但它并不想将数据存储在数组中。

我也尝试过:

theArray.TownName = townData;
theArray = [{TownName:townData}];
theArray = {[TownName]:townData}];

没有什么想存储数据。

有什么建议吗?

:: EDIT ::

data.theData = 
"Auckland"[  
   {  
      "username":"pndemoname1",
      "number":"373456",
      "www":"http://373456.pndemoname1",
      "icon":"/imgs/pndemoname1.png"
   },
   {  
      "username":"pndemoname2",
      "number":"373458",
      "www":"http://373458.pndemoname2",
      "icon":"/imgs/pndemoname2.png"
   }

data.town = "Auckland";

townData = new Array();

alert(JSON.stringify(data.theData))//Alerts theData

townData[data.town] = data.theData

alert(townData[townName]) //Alerts undefined

:: EDIT2 ::

在处理所有数据的函数中重新定义数组,似乎可以使它工作。

根据我的回答,问题在于我认为javascript vars是全球性的。

3 个答案:

答案 0 :(得分:0)

使用对象或对象数组。

这样的数据结构:

{
    town1: town1Data,
    town2: town2Data,
}

或更常见:

[
    {
        name: "Town 1",
        data: {...}
    },
    {
        name: "Town 2",
        data: {...}
    },
]

供参考:

http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/

答案 1 :(得分:0)

我得到了你想要做的事情,首先通过确保你使用OBJECT而不是数组来动态地向你的对象添加属性名称,所以当你想要存储的东西时你会做以下内容:

var _obj = {}, _something = 'xyz';
_obj[ _something ] = {  ...  }; // json structure

您遇到的问题是您希望将字符串值指定为数组中的键,这将无效。

但是,您仍然可以使用您定义的阵列并执行以下操作:

var _array = new array();
_array.push( { .... } ); // insert json structure

记住!通过使用数组,每次要访问密钥时都必须遍历所有值,这是避免出错的最佳做法。

祝你好运。

答案 2 :(得分:0)

问题是我没有在我尝试添加信息的功能中定义数组。

我认为var是全局的(太多PHP)