[英]JavaScript: why array.push() appends two objects instead of one
我对JS还是很陌生,我的代码确实有一个我不明白的问题:我尝试将文本值对添加到数组中,并且基本上可以使用,但是不是添加单个对,而是添加两个对。 下面是代码片段,问题出在后一个if语句中。 我已在代码段中添加了评论,以解释我在做什么。
players.addResult = function(result){
//result-argument contains results of games, like: Object {0: "4-2", 1: "5-3", 2: "7-1"}
var playerList = [];
var standingArray = [];
resultLen = Object.keys(result).length;
//loop iterates thru results by index
for (var x=0; x < resultLen; x++) {
var newResult = result[x];
newResult = newResult.split("-");
if (newResult[0] > newResult[1]) {
//the next line retrieves the name of a winning player from another array
playerVal = players.pairs[x].player1;
playerVal = playerVal.text;
console.log(playerVal); //Output of this: Bill
value = playerList.indexOf(playerVal); // Checks if the player already exists on the standings, returns -1 if false.
if (value === -1) {
/*if the player gets his first points, his name and earned
points are added on to the standingArray. And the next line of code is the
interesting one, because I am expecting to have an array with
index, name of the winner and points. Like this:
Object 0 name:"Bill" points:2. But instead of that, there are two
objects on the array, one for both players:
[Object]
0: Object
name: "Bill"
points: 2
__proto__: Object
1: Object
name: "Greg"
points: 2
__proto__: Object
length: 2
__proto__: Array[0]*/
standingArray.push({name: playerVal, points: 2})
playerList.push(playerVal); //this is for keeping on track that player is now on the standingArray
console.log(playerVal);
console.log(playerList);
console.log(standingArray);
}
else {
console.log("else");
}
console.log(playerList);
console.log(standingArray);
所以问题是JS如何获得Greg的名字-我检查了playerVal-variable,它实际上只包含Bill的名字。 热烈欢迎任何帮助!
从console.log
出现在控制台中的输出仍然有效。 它反映了在进行console.log
调用之后传递给console.log
的对象的更改。
您可能需要JSON.stringify
传递给console.log
或复制Array:
console.log(playerList.slice());
console.log(standingArray.slice());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.