向JavaScript数组或哈希表添加动态键值对

82

我正在尝试向一个已有的 JavaScript 关联数组中添加一个键值对。这个键需要是一个变量。这是为了进行 JSON 编码。我知道有很多插件和框架可以做到这一点,但我想要一个简单的答案。

ary.push({name: val});

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

我正在使用jQuery循环遍历表单字段。


可能是重复的问题:如何将动态键值对传递给对象字面量? --- 在提问之前请先使用搜索功能。 - Felix Kling
3
你想要 ary = [ key: value, key: value, ...] 还是 ary = [{key: value}, {key: value}, ... ] - wheresrhys
5个回答

215

在ES6中...

你可以使用 解构赋值;

ary.push({[name]: val});

然而,考虑到这是ES6语法,通常的警告仍然适用;在某些浏览器(尤其是IE和Edge 13)中无法使用...但Babel可以将其转换。


如果不使用ES6(支持旧版浏览器)...

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

var obj = {};

obj[name] = val;

ary.push(obj);
如果你想深入了解,可以查看这篇文章,介绍方括号和点表示法之间的区别。

1
这是答案。谢谢!当我将数组声明为Array时,我输入了以下内容: ary[] company "kim corp" email "eml1" - Kim Schroeder
17
如果这是你的答案,你应该将其标记为正确答案,这样 Matt 就可以获得积分,人们也可以轻松看到哪个答案对你有用。 - Atomox
这对我很有帮助。我有一个包含多个名称/值对的数组对象 - 例如在PHP中:$test = array(); $test[] = array ("description" => "first", "identifier" => "1");。在JavaScript中,要添加到其中只需使用 var obj = {}; obj["description"] = "second"; obj["identifier"] = 2; ary.push(obj);,其中ary是分配给PHP数组的JavaScript变量。 - Gravitoid
特别是第一个。ES6语法正好符合我的预期。我得到了一个带有“动态”键名的简单键值对。所以它在IE中不起作用...还有什么新鲜事吗。 - Non Plus Ultra

40
var ary = [];

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

pushToAry("myName", "myVal");

仔细阅读您的问题后,您所需要的只是以下代码:

$(your collection of form els).serializeArray();

好老的 jQuery


27

“关联数组”实际上只是一个对象。您不使用push,而是将属性分配给对象:

ary[name] = val;

它应该这样做,我同意。我会发布所有的代码,希望你能看出错误在哪里。 - Kim Schroeder
这是最好的答案。非常简单,如果您已经定义了哈希,则只需这样做即可。 - nfriend21

6
以下代码将会帮助您。
ary.push( {[name]: val} );

请看下面的例子

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

2
const tStyles = [];
for (const i of iStyles) {
  const temp = {};
  temp[`${style}`] = `../dist/css/uikit.${wFile}.${style}.css`;
  tStyles.push(temp);
}

JSON: {"black-beige":"../dist/css/uikit.or.black-beige.css"}

翻译为:JSON格式:{"黑色-米色":"../dist/css/uikit.or.black-beige.css"}。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接