代码之家  ›  专栏  ›  技术社区  ›  negrotico19

Javascript:如何用数字字符串键创建对象

  •  0
  • negrotico19  · 技术社区  · 6 年前

    我需要用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”。。。

    3 回复  |  直到 6 年前
        1
  •  1
  •   amrender singh    6 年前

    可以使用两个嵌套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
  •  0
  •   Shubham Gupta    6 年前

    将myObj.istr更改为myObj[istr]

        3
  •  0
  •   Terry D    6 年前

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

    另一种选择是使用:

    其中istr是一个字符串