【问题标题】:How can set a property using the same name without changing existing value如何在不更改现有值的情况下使用相同的名称设置属性
【发布时间】:2019-10-18 14:35:43
【问题描述】:

使用 JavaScript,如何设置已经具有同名属性的对象的属性?比如我要输出的是:

var obj = {
    name: "foo"
};

obj[name] = "baz";

正常输出是:

console.log(obj) => {name:baz}.

我要输出:

console.log(obj) => {name:foo,name:baz}.

我知道这不是最佳做法,但这可能吗?

【问题讨论】:

  • 一个对象中不可能有两个相同的键。如果您需要多个值,也许您应该考虑使用数组。
  • 我不确定你的推理是什么,但问问你自己:“如果你可以拥有多个相同的键,obj.name 会指出什么?” 如果你要存储多个名称,请使用const names = [...]obj = { names: [] }
  • 感谢您的回复。我尝试按月动态创建 obj。它的 13 件。一张嘴必须在对象中重复。为什么我使用这种方法。有什么建议吗?

标签: javascript arrays object dynamicobject


【解决方案1】:

您可以阅读core js concepts 以及编程中的基本数据类型,例如地图和数组。

我可以猜测你的任务是在数组中存储一些类似的数据结构:

var list = [{name:'foo'},{name:'baz'}]

【讨论】:

    【解决方案2】:

    你根本做不到。属性的最新值将始终覆盖之前的值。

    即使合并具有相同属性名称的对象也无济于事 - 浅合并或深度合并。

    但是,在某些 JavaScript 框架中,有一些非常奇怪的情况可能会发生这种情况 - 例如在 Vue.js 中。但这没有抓住重点,因为我们只考虑纯 Javascript。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 2023-01-01
      • 2011-08-02
      • 2020-11-24
      • 1970-01-01
      相关资源
      最近更新 更多