在javascript中将对象添加到对象内的数组中

时间:2017-10-18 16:51:53

标签: javascript arrays algorithm object javascript-objects

我对Javascript很新,但我想创建一个游戏。在游戏中,每当用户玩或完成某个级别时,他们将累积积分(有点像成就或徽章)。我需要编写一种算法,不仅可以跟踪用户的积分,还可以在他们完成一个动作和/或获得必要的积分后为他们分配正确的徽章。

我正在考虑为每个玩家创建一个User对象,其中包括'name','points'等属性,以及列出玩家到目前为止获得的徽章的数组。徽章本身也将是对象,并且将存在描述等级的某些属性。

是否可以在Javascript中将对象推入另一个对象内?例如:

var daniel = {
  userName: "Daniel White",
  userPoints: 1250,
  userBadges = [ 'Bronze', 'Silver' ],
 }

var goldBadge = {
  badgeName: "Gold",
  minWeight: 1250,
}

注意:'minWeight'属性声明用户必须至少有1250分才能获得该徽章。

我可以通过将goldBadge推送到数组userBadges来将金徽章分配给用户Daniel吗?或者我是不是错了?

4 个答案:

答案 0 :(得分:1)

  

我可以通过将goldBadge推送到数组userBadges来将金徽章分配给用户Daniel吗?或者我是不是错了?

是的,在javascript中可以有一个不同类型的数组。在这种情况下:

Lars Schwarz There are no options you could specify or even change. 
The build-in NLP is only meant as simple integration, 
if you need extended options you need to integrate the calls yourself.

答案 1 :(得分:0)

是的,您可以push将其userBadges设置为var daniel = { userName: "Daniel White", userPoints: 1250, userBadges = [ 'Bronze', 'Silver' ], } daniel.userBadges.push({ badgeName: "Gold", minWeight: 1250, })

像这样:

var daniel = {
  userName: "Daniel White",
  userPoints: 1250,
  userBadges : ['Bronze', 'Silver']}

var goldBadge = {
  badgeName: "Gold",
  minWeight: 1250}

daniel.userBadges.push(goldBadge)

答案 2 :(得分:0)

  

我可以通过将goldBadge推送到数组userBadges来将金徽章分配给用户Daniel吗?或者我是不是错了?

我会说......对两者都是。你完全可以将黄金推到徽章上(其他答案显示如何这样做),但如果点是徽章的唯一决定因素,那么只需创建一个取整数并返回徽章数组的函数:

const badges = [["gold", 1250], ["silver", 1000], /* etc */];
const getBadgesByScore = score => {
  return badges
    .filter(([name, thres]) => score >= thres)
    .map(([name] => name); 
};

getBadgesByScore(daniel.score); // ["gold", "silver"...

使用对象属性可能在概念上很简单,但您需要存储大量重复数据。

答案 3 :(得分:-1)

只需使用push方法

即可



var daniel = {
  userName: "Daniel White",
  userPoints: 1250,
  userBadges: ['Bronze', 'Silver']
}

var goldBadge = {
  badgeName: "Gold",
  minWeight: 1250
}
daniel.userBadges.push(goldBadge);
console.log(daniel)