如何在普通JavaScript中动态创建嵌套对象
我正在尝试创建一个如下所示的对象:如何在普通JavaScript中动态创建嵌套对象,javascript,Javascript,我正在尝试创建一个如下所示的对象: { Player1: [ {cardName: "test", balanceNum: null, ability:""} ], Player2: [ {cardName: "test", balanceNum: null, ability:""} ], .
{
Player1: [
{cardName: "test",
balanceNum: null,
ability:""}
],
Player2: [
{cardName: "test",
balanceNum: null,
ability:""}
],
.
.
.
}
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: "",
balanceNum: null,
ability:""
};
// Also i don't see the utility of the other array
}
目前,我正在尝试循环并动态地创建它。玩家通过循环获得更新,我希望每个新条目都从player1开始,然后继续播放
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
});
}
var playersinfo=[];
var playerStatus=[];
var player=“”;
var指数=1;
对于(i=0;i
让我直截了当地说:您希望数组包含多个属性,其中key=playerN和value是播放器的结构。对吧?
如果是这样,您不希望playerStatus是一个列表,而是一个对象(您仍然可以像使用数组一样迭代它的属性)。因此,您的代码如下所示:
{
Player1: [
{cardName: "test",
balanceNum: null,
ability:""}
],
Player2: [
{cardName: "test",
balanceNum: null,
ability:""}
],
.
.
.
}
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: "",
balanceNum: null,
ability:""
};
// Also i don't see the utility of the other array
}
const playerStatus=[];
var player=“”;
//正如在下面的评论中所说的,没有必要使用变量索引,因为我已经在递增并跟踪索引
对于(i=0;i
或者,我建议您使用key=playerN和value=ObjectPlayer的map,这两种方法基本相同,但您可以使用一些有用的内置函数。不需要第二个数组
另外,键值数组在JS中也有一些不同。请查收
这会让你得到想要的输出;
const playerCount=15;//实例
var playerInfoList={};//后果
对于(i=0;i
其他解决方案正在使用:
playerCount=5;
const result=Array.from(Array(playerCount)).reduce((current,u,i)=>{
当前[`player${i+1}`]=[{
卡名:“,
balanceNum:null,
能力:“
}];
回流;
}, {} );代码>什么不起作用?为什么你要跟踪索引,而for()
已经提供了一个索引?我只是复制并粘贴了他的代码,不要问我问题,因为OP向你展示了你给出的是“坏”建议?没有任何意义……我告诉他如何实现他的目标,但我想你是对的,我正在通过“复制并粘贴”他的代码进行清理。我的意思是,我复制并粘贴了答案上的代码,更改了他想更改的部分,这不是一个坏建议,仔细看看问题:)非常感谢,这就是我需要的!我刚刚在var键中的I中添加了+1,因此它从player1开始,而不是从player0开始