如何在Javascript对象中将多个值添加到一个键?

11

我有一个对象 var obj = {key1: "value1", key2: "value2"}; 我想要向key1或key2添加多个值或值的数组

var obj = {key1: "arrayOfValues", key2: "value2"};

这是否可能?基本上我想将其发送到php进行处理。


obj.key1 = "arrayOfValues"。这是您的意思吗?我没看出您具体在哪方面遇到了困难。如果您了解JS数组语法,这应该很容易。 - Sebastian Simon
是的,也许我不确定。 - user5449836
3个回答

20

您可以为该属性定义一个数组:

var obj = {key1: ["val1", "val2", "val3"], key2: "value2"};

或者,事后分配它:

var obj = {key2: "value2"};
obj.key1 = ["val1", "val2", "val3"];

17

你可以用两种方式创建对象:

  1. 点操作符
  2. 方括号操作符

另外,你可以定义带有/不带初始大小的数组值。在第一种情况下,最坏情况下可以执行以下操作:

var obj = {}
obj.key1 = new Array();
obj.key2 = new Array();
// some codes related to your program
obj.key1.push(value1);
// codes ....
obj.key1.push(value);
// ... same for the rest of values that you want to add to key1 and other key-values

如果你想用括号表示法重复上面的代码,会像这样:

var obj = {}
obj['key1'] = new Array();
obj['key2'] = new Array();
// some codes related to your program
obj['key1'].push(value1);
// codes ....
obj['key1'].push(value);
// ... same for the rest of values that you want to add to key1 and other key-values

使用方括号表示法,你可以使用无法用点表示法表示的字符,例如1、3、%等。


0

我遇到了同样的情况,在浏览了许多资源后,我找到了非常优雅的解决方案。使用括号表示法,可以将多个值添加到同一个键中。

let obj = {}
const demo = (str, objToAdd) => {
if(!obj[str]){
obj[str] = {}
}
const key = Object.keys(objToAdd)[0]
obj[str][key] = Object.values(objToAdd)[0]
}

这里重要的一行是obj[str][key] = Object.values(objToAdd)[0]。这行代码将帮助您在同一键内创建对象。obj[str][key]将在对象内创建对象。 要添加值,请按以下方式调用函数

demo('first', {content: 'content1' } )
demo('first', {content2: 'content3' } )

obj

first: {content: "内容1", content2: "内容3"}

希望这能帮到有需要的人。


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