首页 > 解决方案 > 如何在 vanilla JavaScript 中动态创建嵌套对象

问题描述

我正在尝试创建一个如下所示的对象:

{
   Player1: [
      {cardName: "test", 
       balanceNum: null,  
       ability:""}
   ],
   Player2: [
      {cardName: "test", 
       balanceNum: null,  
       ability:""}
   ],
   .
   .
   .
}

目前我正在使用这种尝试循环并动态创建它。播放器通过循环获取更新,我希望每个新条目都以 player1 开头并继续到 playerN。

var playersInfoList = [];
var playerStatus = [];
var player = "";
var index = 1;
for (i = 0; i < playerCount; i++) {
   player = "player" + index++;
   playerStatus.push({
      cardName: "", 
      balanceNum: null,  
      ability:""
   });
   playersInfoList.push({
      [player]: playerStatus
   });
}

标签: javascript

解决方案


不需要第二个数组。


此外,键值数组在 JS 中也有所不同。请检查Best way to store a key=>value array in JavaScript? .


这应该会为您提供所需的输出;

const playerCount = 15;   // example
var playersInfoList = {}; // Result

for (i = 0; i < playerCount; i++) {

   // Create key as 'player' + i
   var key = "player" + i;
   
   // Add new object
   playersInfoList[key] = {
      cardName: "", 
      balanceNum: null,  
      ability:""
   };
}
console.log(playersInfoList); // Show result


推荐阅读