将动态键,值对添加到JavaScript数组或哈希表

Kim*_*der 64 javascript json

我正在尝试将键值对添加到现有的javascript关联数组中.关键需要是一个变量.这适用于JSON编码.我意识到有很多插件和框架,但我想要一个简单的答案.

ary.push({name: val});
Run Code Online (Sandbox Code Playgroud)

where ary是一个新数组,name是一个包含键的变量,val是这个条目的值.

我在jQuery循环中执行此操作,循环遍历表单字段.

Mat*_*att 169

在ES6 ......

在ES6中,您可以使用解构赋值 ;

ary.push({[name]: val});
Run Code Online (Sandbox Code Playgroud)

但是,鉴于这是ES6语法,通常的警告适用; 这在某些浏览器中并不起作用(特别是IE和Edge 13)......尽管Babel会为您提供此信息.


没有ES6(传统浏览器支持)......

您需要定义一个对象并使用方括号表示法来设置属性;

var obj = {};

obj[name] = val;

ary.push(obj);
Run Code Online (Sandbox Code Playgroud)

如果您想要更多地阅读它,请参阅本文关于方括号和点符号之间的差异.

  • 如果这是你的答案,你应该这样标记,所以马特得到了信任,人们可以很容易地看到哪个答案适合你. (16认同)

whe*_*hys 33

var ary = [];

function pushToAry(name, val) {
   var obj = {};
   obj[name] = val;
   ary.push(obj);
}

pushToAry("myName", "myVal");
Run Code Online (Sandbox Code Playgroud)

刚刚完全阅读了您的问题,您需要的只是以下内容

$(your collection of form els).serializeArray();
Run Code Online (Sandbox Code Playgroud)

好老jQuery


Jam*_*gne 25

"关联数组"实际上只是一个对象.您不使用push,只需为对象指定属性:

ary[name] = val;
Run Code Online (Sandbox Code Playgroud)


Bas*_*sil 5

以下代码将帮助您

ary.push( {[name]: val} );
Run Code Online (Sandbox Code Playgroud)

见下面的例子

let allData = [{name: "Cat", type: "Animal"}]
let finalData: any = [];
for (let i = 0; i < allData.length; i++)
{
  let obj = allData[i];
  for (let KEY in obj)
  {
    //Pushing data to other array as object
    this.finalData.push({ [KEY] : obj[KEY] });
  }
}
Run Code Online (Sandbox Code Playgroud)