Javascript 如何引用存储在数组中的变量而不是其值?
我有一组变量,它们表示2d数组中销售的商品的价格和数量。我 为了找到最低的价格,我们对它进行了分类 我想通过引用数组将第一个项目(玩家A)的第二个变量(售出数量)设置为一个值(200) 例如:Javascript 如何引用存储在数组中的变量而不是其值?,javascript,arrays,string,Javascript,Arrays,String,我有一组变量,它们表示2d数组中销售的商品的价格和数量。我 为了找到最低的价格,我们对它进行了分类 我想通过引用数组将第一个项目(玩家A)的第二个变量(售出数量)设置为一个值(200) 例如: var playerASold; var arr=[ [playerAPrice,playerASold], [playerBPrice,playerBSold], [playerCPrice,playerCSold]]; arr[0][1]=200; 这不起作用,可能是因为
var playerASold;
var arr=[
[playerAPrice,playerASold],
[playerBPrice,playerBSold],
[playerCPrice,playerCSold]];
arr[0][1]=200;
这不起作用,可能是因为playerSald
当前的值为0,并且它正在尝试设置0=0
如何引用变量而不是变量的值?JavaScript对C的指针或C++的引用没有概念,因此您必须以不同的方式进行引用。与其尝试在数组中存储引用,不如尝试使数组成为数据的唯一持有者。
可能是这样的:
var players = [
{ price: 5, sold: 1 },
{ price: 3, sold: 6 },
{ price: 9, sold: 2 }
];
var arr=[[playerAPrice:0,playerASold:0],[playerBPrice:0,playerBSold:0], [playerCPrice:0,playerCSold:0]];
然后,您可以使用
播放器[1],而不是,比如说,playerball
。现在,如果需要,您可以使用一个变量来代替1
。只需仔细查看您的代码您正在将值设置为数组。您正在替换arr[0][1]项值。以前它是PlayerSald,即0,现在是200。因此,您没有将值指定给PlayerSald。请执行以下操作:
var players = [
{ price: 5, sold: 1 },
{ price: 3, sold: 6 },
{ price: 9, sold: 2 }
];
var arr=[[playerAPrice:0,playerASold:0],[playerBPrice:0,playerBSold:0], [playerCPrice:0,playerCSold:0]];
并使用以下命令:
arr[0].playerASold=200.
Javascript原语(在本例中为数字)是不可变的。也就是说,你不能改变他们的价值观。对数字的操作将创建新的数字。然而,对象是可变的
正如icktoofay所建议的,将具有价格和售出属性的可变玩家对象重构为可变玩家对象可能是一个好主意。问题在于售出数量没有设置。我将通过计算谁是最便宜的玩家来确定卖出多少。我让5个人在文本框中输入价格,然后让javascript抓取这些价格,看看哪个价格最低。我是用一种排序来完成这项工作的,它会重新排序玩家。然后,我只想从价格最低的参与者那里“购买”产品,并在他们之间分配我的股票。我不知道如何追踪谁是这个解决方案的赢家。这就是为什么我想把球员的名字附在价格上。这有意义吗?@ThomasGaskin:你可以用一个额外的名称
属性保留玩家的名字,例如{name:“A”,价格:5,售出:1}
。值得注意的是,您可以随时添加属性;您也可以设置玩家[1]。平衡并开始使用它。@ThomasGaskin:另外,将所有东西都设置为这样的对象数组可以简化排序:players.sort(函数(a,b){return a.price-b.price;})
使玩家从最低价格
到最高价格
排序。