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

时间:2018-09-23 09:24:26

标签: javascript

我需要使用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' } }

我们如何使用数字字符串键(例如“ 1”,“ 2”,“ 3” ...)创建json对象?

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

将myObj.istr更改为myObj [istr]

答案 2 :(得分:0)

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

另一个选择是使用:

myObj [istr] =值

其中istr是字符串