【发布时间】:2017-10-18 16:51:53
【问题描述】:
我对 Javascript 很陌生,但我想创建一个游戏。在游戏中,每次用户玩或完成某个级别时,他们都会积累积分(有点像成就或徽章)。我需要编写一个算法,它不仅可以跟踪用户的积分,而且会在他们完成操作和/或获得必要积分后为他们分配正确的徽章。
我正在考虑为每个玩家创建一个 User 对象,该对象将包含诸如“姓名”、“积分”等属性,以及一个列出玩家迄今为止获得的徽章的数组。徽章本身也将是对象,并且会有描述等级的某些属性。
是否可以在 Javascript 中将一个对象推入另一个对象中?例如:
var daniel = {
userName: "Daniel White",
userPoints: 1250,
userBadges = [ 'Bronze', 'Silver' ],
}
var goldBadge = {
badgeName: "Gold",
minWeight: 1250,
}
注意:“minWeight”属性表明用户必须至少拥有 1250 分才能获得该徽章。
我是否可以通过将 goldBadge 推送到数组 userBadges 来将金色徽章分配给用户 Daniel?还是我做错了?
【问题讨论】:
-
我会说...对两者都是。您完全可以将黄金推到徽章上,但如果积分是徽章的唯一决定因素,那么只需创建一个函数,该函数接受一个整数并返回一个徽章数组:
const getBadges = n => [["gold", 1250], ["silver", 1000]].filter(([name, thres]) => thres <= n).map(([name] => name);。使用对象属性可能在概念上很简单,但您会存储大量重复数据。
标签: javascript arrays algorithm object javascript-objects