javascript - 如何在 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
});
}
解决方案
不需要第二个数组。
此外,键值数组在 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
推荐阅读
- jenkins - Jenkins - 如何防止作业在 POD_LABEL 上运行并且仅在特定标签上运行
- docker - 无法从我的 Docker 容器内部连接到主机的 localhost
- spring - CommandHandler 设计
- kdb - 字符串前的“-1”有什么作用?
- vue.js - vuejs3 模块解析在服务器启动时失败
- docker - 使用 Prometheus 监控 bash 命令或 shell 脚本的结果
- docker - GnuTLS:TLS 连接未正确终止。无法建立 SSL 连接
- arrays - 我对这些情况的时间复杂度是正确的?
- modelica - 模拟后如何自动删除 Dymolas 构建文件?
- kotlin - onMapReady 函数似乎没有在 android 应用程序上调用