【问题标题】:Javascript object literal - possible to add duplicate keys?Javascript对象文字 - 可以添加重复的键?
【发布时间】:2021-11-02 23:27:29
【问题描述】:

在 javascript 中,是否可以在对象文字中添加重复键?如果是,那么在第一次创建对象后如何实现它。

例如:

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

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

【问题讨论】:

  • 不能。它会更新值。
  • 你希望如何使用它?
  • @Ville:您希望如何访问该值并知道它是哪个版本?
  • 我即将从该对象生成一个 xml。并且该 xml 包含具有完全相同名称的元素(尽管它们包含具有不同值的属性)。嗯..也许我需要先生成没有那些重复的 xml,然后尝试在稍后的过程中添加那些重复的元素。
  • 这能回答你的问题吗? JS associative object with duplicate names

标签: javascript


【解决方案1】:

不,这是不可能的。同理:

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

【讨论】:

    【解决方案2】:

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

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

    另一种方法是使用数组:

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

    【讨论】:

    • 我认为这是因为您不能只对任何变量进行算术运算。用户没有指定“某物”是什么类型的变量。但是,数组实现会起作用。
    【解决方案3】:

    在 javascript 中,具有相同名称的键将覆盖前一个键,它将采用用户定义的最新键值对。

    例如:

    var fruits = { "Mango": "1", "Apple":"2", "Mango" : "3" }
    

    上面的代码将评估为

    var fruits = { "Mango" : "3" , "Apple":"2", }
    

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 2022-12-31
      • 2018-12-05
      • 2011-09-23
      • 2015-09-18
      • 2014-04-13
      • 2012-08-27
      相关资源
      最近更新 更多