微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在原始JavaScript中动态创建嵌套对象

如何解决如何在原始JavaScript中动态创建嵌套对象

我正在尝试创建一个看起来像这样的对象:

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

目前,我目前正在使用这种尝试进行循环并动态创建它。播放器通过循环获取更新,我希望每个新条目都从播放器1开始并继续播放器N。

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

解决方法

不需要第二个数组。


此外,键值数组在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

,

其他解决方案正在使用Array.prototype.reduce()

playerCount = 5;
const result = Array.from(Array(playerCount)).reduce( (current,_,i) => {
  current[`player${i+1}`] =  [{
    cardName: "",ability:""
  }];
  return current;
},{} );

,

让我明白这一点:您希望您的数组包含几个具有key = playerN的属性,并重视玩家的结构。对吧?

如果是这样,则不希望将playerStatus放到列表中,而是要放一个对象(您可以像处理数组一样继续迭代其属性)。所以你的代码变成这样:

const playerStatus = [];
var player = "";
// as said in the comments below there is no need to use the variale index as i is already incrementing and keeping track of index

 for (i = 0; i < playerCount; i++) {
    player = "player" + i;
    playerStatus[player] =
    {
       cardName: "",ability:""
    };
    
    // Also i don't see the utility of the other array
 }

或者,我建议您使用键= playerN和值= ObjectPlayer的地图,这几乎相同,但是您可以使用一些有用的内置函数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?