Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 存储分配给不同用户的项目_Javascript_Oop - Fatal编程技术网

Javascript 存储分配给不同用户的项目

Javascript 存储分配给不同用户的项目,javascript,oop,Javascript,Oop,假设我有一副10张牌。它们都是不同的,但假设5个是“100买入,50卖出”,另外5个是“200买入,100卖出” 然后,我有两个人(作为“个人”对象)购买这些卡(从牌堆中随机挑选),并在某个时候出售这些卡 我曾考虑将每张卡存储为一个对象,其中包含id、name、buyPrice、sellPrice和owner,现在我想知道计算一个人拥有哪些卡的最佳方法是什么 1) “person”对象中的一个数组,其中包含他们拥有的卡的ID,当他们购买/出售该卡时,会将其添加/从数组中删除 2) 当一个人可以出

假设我有一副10张牌。它们都是不同的,但假设5个是“100买入,50卖出”,另外5个是“200买入,100卖出”

然后,我有两个人(作为“个人”对象)购买这些卡(从牌堆中随机挑选),并在某个时候出售这些卡

我曾考虑将每张卡存储为一个对象,其中包含
id
name
buyPrice
sellPrice
owner
,现在我想知道计算一个人拥有哪些卡的最佳方法是什么

1) “person”对象中的一个数组,其中包含他们拥有的卡的ID,当他们购买/出售该卡时,会将其添加/从数组中删除

2) 当一个人可以出售一张卡时,循环卡片对象并创建一张该人拥有的卡片的列表


3) 我没有想到的一种更简单、更简单的方法是另一种选择:

3) 每个卡片对象都有一个卡片所有者的
personId
字段(或
person
引用)(如果没有所有者,则为空)。当卡片售出时,您只需更新PersonId即可

这与1)相反,如果你需要列出一个人拥有的所有卡片,我认为这两种方法在努力程度上是相等的,但是你应该考虑到你的所有其他要求来评估这种努力


希望这有帮助,干杯。

因为JavaScript对象是通过引用传递的,所以没有理由不将实际的卡片对象存储在person对象中

Person.prototype.addCard = function (card) {
    this.cards.push(card);
};

Person.prototype.removeCard = function (card) {
    this.cards.splice( this.cards.indexOf(card), 1 );
};
因此,如果
person1
person2
购买
card1
,您将从一个移动到另一个:

person1.addCard(card1);
person2.removeCard(card1);