我通常是 C# 开发人员,但主要使用 jQuery 编写客户端应用程序。
这是相当直接的:我有一个“组”列表,其中包含一些参数(如组名)和一个也有一些参数的“用户”列表。
目前,我尝试使用具有特定 id 的 <li>
来管理它,因此需要进行大量字符串匹配才能将 <li id="group-2">Name - ExtraInfo</li>
重新转换为我可以使用的东西。
我觉得这种方法很愚蠢,因为 a) 我使用 UI 作为状态的后端,b) 我依赖字符串解析而不是使用真实对象。
在 C# 中,我只会创建一个 DTO(本质上是一个 List<Group>
),但我在 JavaScript/jQuery 方面没有足够的经验来做到这一点。
有人可以给我一些快速提示如何创建自定义对象并管理这些对象的列表吗?
最佳答案
扩展 Ionut G. Stan 的回答,我建议嵌套对象:
var groups = {
group1: {
name: "Group 1",
users: {
uid1: { name: "User 1" },
uid2: { name: "User 2" },
uid3: { name: "User 3" }
}
},
group2: {
name: "Group 2",
users: {
uid1: { name: "User 1" },
uid4: { name: "User 4" }
}
}
};
if ("group1" in groups && "uid1" in groups["group1"].users) /* ... */;
var username = groups["group1"].users["uid1"].name
delete groups["group1"].users["uid1"];
groups["group1"].users["uid4"] = { name: "User 4" };
为避免不必要的重复和插入悖论:
// all relevant users, for look-up purposes
var allUsers = {
uid1: { name: "User 1" },
uid2: { name: "User 2" },
uid3: { name: "User 3" },
uid4: { name: "User 4" }
}
// groups reference the ID only, details are in allUsers["uid1"] etc
var groups = {
group1: {
name: "Group 1",
users: {uid1: 1, uid2: 1, uid3: 1}
},
group2: {
name: "Group 2",
users: {uid1: 1, uid4: 1 }
}
};
if ("group1" in groups && "uid1" in groups["group1"].users) /* ... */;
var username = allUsers["uid1"].name
delete groups["group1"].users["uid1"];
groups["group1"].users["uid4"] = 1;
关于用于保存状态的 JavaScript/jQuery DTO/对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1537348/