【问题标题】:add entries to JSON in a while loop在 while 循环中向 JSON 添加条目
【发布时间】:2019-06-23 07:02:27
【问题描述】:

如何在while循环中将键值对添加到JSON对象中?

var sName = "string_";
var aKeys = ["1", "2", "3"];
var sKey = "key";
var n = 1;
 var aObj = {};

var l = aKeys.length;
for(let i=0; i < l; i++){
   while(n < 5)
  {
    n += 1;
    aObj.sKey = sName.concat(n);
  }
}
console.log(JSON.stringify(aObj));

预期输出:

{"sKey":"string_2", "sKey":"string_3", "sKey":"string_4"}

【问题讨论】:

  • 预期输出:{"sKey":"string_2", "sKey":"string_3", "sKey":"string_4"}
  • 您不能有重复名称的键。
  • 这不可能对每个值都有相同的键。顺便说一句,你正在覆盖String
  • 你不能在一个对象中多次使用同一个键。
  • 你好大理。欢迎来到 SO。您的预期输出不是有效的 JSON,JSON 对象中的每个键都必须是唯一的。如果您希望一个键保存多个值,那么最好是一个数组,例如{"sKey": ["string_2", "string_3", "string_4"]}

标签: javascript json


【解决方案1】:

如前所述,Object 不能有重复的键。 试试:

var value = "string_";
var sKey = "sKey_"
var i = 1;
var Obj = {};

while(i < 5)
{
  Obj[sKey.concat(i)] = value.concat(i++);
}

console.log(JSON.stringify(Obj));

【讨论】:

  • 对不起,我没看懂评论。
  • 这是我真实脚本的片段。只是为了看到密钥是新的(不一样的)它们将来自我们的 API 方法
  • 输出:{"sKey_1":"string_2", "sKey_2":"string_3", "sKey_3":"string_4"}
  • String 是一个内置对象。不要通过分配来覆盖它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-06
  • 2016-08-25
  • 2011-07-08
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
相关资源
最近更新 更多