使用 var 键将 [数据对象] 添加到现有数组中

Add [DataObject] to exsisting array with var key

本文关键字:数组 添加 键将 var 数据 对象 使用      更新时间:2023-09-26

使用Cordova,我正在尝试将对象添加到数组中。 我在节点JS上使用以下命令工作: theData = {[varkey]:DataObject};

但是我无法让它在我的 JavaScript 中以与 cordova 相同的方式工作。

我需要执行以下操作:

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}];

没有任何东西想要存储数据。

有什么建议吗?

::编辑::

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
::

编辑2::

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

根据我的回答,问题是我假设javascript vars是全局的。

使用对象或对象数组。

像这样的数据结构:

{
    town1: town1Data,
    town2: town2Data,
}

或更常见:

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

供参考:

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

我明白你想做的,首先要动态地将属性名称添加到你的对象,通过确保你使用的是 OBJECT 而不是数组,所以当你想存储一些东西时,你会执行以下操作:

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

您面临的问题是您想在数组中分配一个字符串值作为键,这将不起作用。

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

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

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

祝你好运。

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

我假设变量是全局的(PHP 太多了)