动态创建对象时如何使用 JSON 对象值中的变量?

时间:2021-04-21 09:30:50

标签: javascript json

我正在尝试使用 for 循环动态创建对象数组。此对象的键值对的值来自不同的数组。那么如何使用 for 循环动态创建对象数组呢?我尝试了以下代码块,但它不起作用。

var anObj = [];
var charectors = ['Iron Man', 'Hulk', 'Thor']
var actors = ['Robert Downey, Jr', 'Mark Ruffalo', 'Chris Hemsworth']
for(let i=0; i<charectors.length; i++){
  anObj[i] = {
    charector : charectors[i],
    actor : actors[i]
  } 
}

上面的代码抛出一个错误,因为我期望对象数组为

[
  {
    "charector":"Iron Man",
    "actor":"Robert Downey, Jr"
  },
  {
    "charector":"Hulk",
    "actor":"Mark Ruffalo"
  },
  {
    "charector":"Thor",
    "actor":"Chris Hemsworth"
  } 
] 

4 个答案:

答案 0 :(得分:3)

您也可以使用 map

var anObj = [];
var charectors = ["Iron Man", "Hulk", "Thor"];
var actors = ["Robert Downey, Jr", "Mark Ruffalo", "Chris Hemsworth"];

const result = actors.map((actor, i) => ({ charector: charectors[i], actor: actors[i] }));
console.log(result)

带有 for...of 循环

var anObj = [];
var charectors = ["Iron Man", "Hulk", "Thor"];
var actors = ["Robert Downey, Jr", "Mark Ruffalo", "Chris Hemsworth"];

const result = [];

for (let [i, actor] of actors.entries()) {
  result.push({
    charector: charectors[i],
    actor: actors[i],
  });
}
console.log(result);

答案 1 :(得分:2)

在 for 循环中使用 : 而不是 =。 基本对象属性赋值

 var anObj = [];
 var charectors = ['Iron Man', 'Hulk', 'Thor']
 var actors = ['Robert Downey, Jr', 'Mark Ruffalo', 'Chris Hemsworth']
 for(let i=0; i<charectors.length; i++){
   anObj[i] = {
     charector : charectors[i],
     actor : actors[i]
   } 
 }

答案 2 :(得分:0)

使用

将值推入数组

anObj.push({
    charector: charectors[i],
    actor: actor[i]
  })

答案 3 :(得分:0)

您有两个错误:

  1. 大括号内的赋值分隔符是冒号,而不是冒号 等号;

  2. 第二个源数组的名称是 actor,而不是 actor。

    var anObj = [];
    var charectors = ['Iron Man', 'Hulk', 'Thor']
    var actors = ['Robert Downey, Jr', 'Mark Ruffalo', 'Chris Hemsworth']
    for(let i=0; i<charectors.length; i++){
      anObj[i] = {
        charector : charectors[i],
        actor : actors[i]
      } 
    }
    
    console.log(anObj);