将对象保存在数组中以获得高分列表

时间:2014-11-27 20:12:02

标签: javascript jquery arrays object storage

我正在用JQuery / Javascript制作一个刽子手游戏,现在我想要一个高分表。我的想法是创建一个对象数组,但问题是,当我尝试将游戏结果存储为数组中的对象(playername:playerscore pair)时,我的文本输出是“object Object”而不是值。

var playerName;
var playerScore;
var gameResult = {};
var highscoreList = [];


function toHighscoreList() {
    playerName = $('#nameTag').text();   // for example value "Henry"
    playerScore = guessedWrong.length;   // for example value 3

    gameResult = {player: playerName, score: playerScore};
    highscoreList[highscoreList.length] = gameResult;

    $('#score1').text(highscoreList[0]);
};

我也试过这个版本的结果相同:

function toHighscoreList() {
    playerName = $('#nameTag').text();   
    playerScore = guessedWrong.length; 
    gameResult = {player: playerName, score: playerScore};

    localStorage.setItem('gameResult', JSON.stringify(gameResult));

    $('#score1').text(JSON.parse(localStorage.getItem('gameResult')));
};

还有另一种方法来存储几个键:值对吗?我仍然希望高分列表很容易修改,所以我可以使用sort()方法进行排名,并用较高的分数替换较低的分数。

2 个答案:

答案 0 :(得分:1)

使用“highscoreList [0]”,您将获得存储在数组中的第一个对象。您应该注意获取单个值(如highscoreList [0] .player或highscoreList [0] .score),格式化并打印它。

$( '#score1')文本(highscoreList [0]);

可以替换为

$('#score1')。text(highscoreList [0] .player +'得分'+ highscoreList [0] .score);

答案 1 :(得分:1)

您可能想要对高分排序,请尝试:

var playerName;
var playerScore;
var gameResult = {};
var highscoreList = [];

function toHighscoreList() {
    playerName = $('#nameTag').text();   // for example value "Henry"
    playerScore = guessedWrong.length;   // for example value 3

    gameResult = {player: playerName, score: playerScore};
    highscoreList.push(gameResult);
    highscoreList.sort(function(a,b) { return (b.score - a.score ) });

    $('#score1').text(highscoreList[0].player + " - score: "+ highscoreList[0].score);
};