【问题标题】:Javascript: how to create an object with numeric String keysJavascript:如何使用数字字符串键创建对象
【发布时间】:2018-09-23 09:24:26
【问题描述】:

我需要在javascript中创建一个对象,类似于下面的结构:

{ 
  '1': { 
    'key1-1': 'val1-1',
    'key-1-2': 'val1-2'
  }, 
  '2': { 
    'key1-1': 'val1-1',
    'key1-2': 'val1-2'
  }
}

我试过 Object();但关键仍然是变量的文字名称。

> var myObj = new Object();
> for (var i  = 1; i< 5; i++) {
... myObj.i = {'key1-1': 'val1-1',
.....         'key-1-2': 'val1-2'}
... }
> console.log(myObj)
{ i: { 'key1-1': 'val1-1', 'key-1-2': 'val1-2' } }

尝试将变量 i 转换为字符串,但还是一样。

> for (var i  = 1; i< 5; i++) {
... var iStr = i.toString();
... myObj.iStr = {'key1-1': 'val1-1',
..... 'key-1-2': 'val1-2'}
... }
> console.log(myObj)
{ iStr: { 'key1-1': 'val1-1', 'key-1-2': 'val1-2' } }

我们如何创建一个带有数字字符串键的 json 对象,例如 '1'、'2'、'3' ...

【问题讨论】:

  • myObj.i更新到myObj[i]
  • 字符串转换自动发生。甚至数组索引也是字符串。您使用错误的语法来定义键。
  • 不存在 json 对象。你想要一个对象?然后是Javascript。您想要该对象的字符串表示形式吗?然后是 JSON。

标签: javascript


【解决方案1】:

您可以使用两个嵌套的 for 循环以及 template literals 使其更通用。并使用bracket notation 来创建动态属性。

let m = 3;
let n =2;

let result = {};

for(let i = 1; i <=m; i++){
  result[i] = {};
  for(let j = 1; j <=n; j++){
      result[i][`key1-${j}`] = `val1-${j}`;
  }
}
console.log(result);

【讨论】:

    【解决方案2】:

    将 myObj.istr 更改为 myObj[istr]

    【讨论】:

      【解决方案3】:

      https://www.w3schools.com/js/js_object_properties.asp

      另一种选择是使用:

      myObj[istr] = 值

      其中istr是一个字符串

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-19
        • 1970-01-01
        • 2018-08-06
        • 2015-01-23
        • 2013-12-05
        • 2018-01-30
        • 2013-03-18
        • 1970-01-01
        相关资源
        最近更新 更多