Javascript对象字面量 - 可以添加重复的键吗?

11
在JavaScript中,对象字面量中是否可以添加重复的键?如果可以,请问在创建对象后如何实现它。
例如:

在JavaScript中,对象字面量中是否可以添加重复的键?如果可以,请问在创建对象后如何实现它。

例如:

exampleObject['key1'] = something;
exampleObject['key1'] = something else;

如何在不覆盖第一个key1的情况下添加第二个key1?


不能。它会更新值。 - Tushar
你会如何使用它? - David H.
@Ville: 你希望如何访问该值并知道它是哪个版本? - lxg
我即将从该对象生成一个XML。而且该XML包含具有完全相同名称的元素(尽管它们包含不同值的属性)。嗯...也许我需要先生成没有这些重复项的XML,然后在过程中尝试添加这些重复元素。 - Ville Miekk-oja
这回答解决了你的问题吗?JS具有重复名称的关联对象 - Ganesh Chowdhary Sadanala
你那里的不是一个对象字面量。作为一个对象字面量,你的例子应该长这样:{ key1: something, key2: something else } - Stewart
3个回答

12

不,这是不可能的。这和下面这个例子是一样的:

exampleObject.key1 = something;
exampleObject.key1 = something else; // over writes the old value

我认为这里最好使用一个数组:

var obj = {
  key1: []
};

obj.key1.push("something"); // useing the key directly
obj['key1'].push("something else"); // using the key reference

console.log(obj);

// ======= OR ===========

var objArr = [];

objArr.push({
  key1: 'something'
});
objArr.push({
  key1: 'something else'
});

console.log(objArr);


6

您不能复制键。您可以获取key1键下的值并手动追加值:

exampleObject['key1'] = something;
exampleObject['key1'] = exampleObject['key1'] + something else;

另一种方法是使用数组:

exampleObject['key1'] = [];
exampleObject['key1'].push(something);         
exampleObject['key1'].push(something else);

我认为这是因为你不能对任何变量进行算术运算。用户没有指定“something”是什么类型的变量。然而,数组实现将起作用。 - David H.

3
在JavaScript中,如果有相同名称的键,则会覆盖先前的键,并且它将采用用户定义的最新键值对。
例如:
var fruits = { "Mango": "1", "Apple":"2", "Mango" : "3" }

以上代码将被计算为:
var fruits = { "Mango" : "3" , "Apple":"2", }

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