【问题标题】:I want to make Javascript object dynamic我想让 Javascript 对象动态化
【发布时间】:2018-12-08 18:28:06
【问题描述】:

这是代码

var str = "Value1";

var str1 = "Value2";

var obj = {
  [str]: str1
};

console.log(obj);

我得到了 obj

{
    Value1:"Value2"
}

但我希望这个对象为

{
    "Value1":"Value 2"
}

谁能解释一下这是怎么可能的?

【问题讨论】:

  • 你为什么要这个?你说的动态是什么?
  • 引号没有任何意义,这只是您的控制台显示它的方式。 JSON.stringify(console.log(obj))
  • 语义上没有区别(例如,尝试将console.log({"Value1":"Value 2"}) 直接粘贴到您的控制台中,您会看到相同的结果)。
  • 再说一遍,你的控制台如何显示它......
  • 我投票决定将此问题作为题外话结束,因为它是XY problem,并且 OP 无法描述真正的问题。

标签: javascript object dynamic


【解决方案1】:

起初你的代码:var obj = {["Value1"]: "Value2"}; 是错误的。你必须写: var obj = {"Value1": "Value2"};var obj = {Value1: "Value2"};

如果我理解正确的话:在你的评论中你写道:

我希望双引号中的 Value1 太动态意味着我也想要双引号中的动态索引

答案:

对象{Value1:"Value2"}{"Value1":"Value2"} 相同。不同之处在于仅在显示(拼写、书写)代码时看到。

例如,如果您执行以下代码,您将看不到差异:

var myObj1 = {"Value1":"Value2"};
var myObj2 = {Value1:"Value2"};

console.log(myObj1.Value1); //Value2
console.log(myObj2.Value1); //Value2

console.log(myObj1["Value1"]); //Value2
console.log(myObj2["Value1"]); //Value2

console.log(JSON.stringify(myObj1)); //{"Value1":"Value2"}
console.log(JSON.stringify(myObj2)); //{"Value1":"Value2"}

【讨论】:

    猜你喜欢
    • 2014-06-26
    • 2015-11-21
    • 2019-04-02
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多