const person={name:'',userPoints:0,computerPoints:0,Tie:0};
function evaluateResult(a,b){
if(a == 'rock' && b == scissor){
document.getElementById('demo').innerHTML="You Win";
userpoints=userpoints+1;
document.getElementById('userscore').innerHTML=userpoints;
}
else if(a == 'scissor' && b == rock){
document.getElementById('demo').innerHTML="You Lose";
computerpoints=computerpoints+1;
document.getElementById('compscore').innerHTML=computerpoints;
}
else if(a == 'scissor' && b == paper){
document.getElementById('demo').innerHTML="You Win";
userpoints=userpoints+1;
document.getElementById('userscore').innerHTML=userpoints;
}
else if(a == 'paper' && b == scissor){
document.getElementById('demo').innerHTML="You Lose";
computerpoints=computerpoints+1;
document.getElementById('compscore').innerHTML=computerpoints;
}
else if(a == 'paper' && b == rock){
document.getElementById('demo').innerHTML="You Win";
userpoints=userpoints+1;
document.getElementById('userscore').innerHTML=userpoints;
}
else if(a == 'rock' && b == paper){
document.getElementById('demo').innerHTML="You Lose";
computerpoints=computerpoints+1;
document.getElementById('compscore').innerHTML=computerpoints;
}
else{
document.getElementById('demo').innerHTML="It\'s a Tie";
tie++;
}
}假设我已经创建了一个person对象,那么我必须保存和更新本地存储中每个键的值。当我的函数evaluateResult给出一个输出时,我想在每次迭代时将结果存储在本地存储空间中,是否可以在每次单击时更新每个键的值?
发布于 2022-09-24 10:57:06
从两个评论到OP自己的答案..。
“无论OP找到了什么可能的解决方案,张贴/提供的代码都有两次类型错误,例如,所有与
b相关的比较(如与b == scissor__、b == rock等)缺少引号……此外,通过基于查找的方法,整个if...else逻辑可以简化得多。”“另一点.由于OP生成一个用户,很可能是从存储的用户(以前的?)游戏分数的存储字符串版本生成一个对象,这个分数需要在evaluateResult的代码中以某种方式来处理.例如,一个user对象可能看起来像.{ scoreCounts: { won: 0, lost: 0, tie: 0 } }__。”
..。并将以上所建议的改进应用到可执行/运行代码示例中.
function evaluateResult(scores, player, computer) {
function playerWins() {
console.log("You Win");
++scores.won;
//document.getElementById('demo').textContent = "You Win";
//document.getElementById('userscore').textContent = ++scores.won;
}
function computerWins() {
console.log("You Lose");
++scores.lost;
//document.getElementById('demo').textContent = "You Lose";
//document.getElementById('compscore').textContent = ++scores.lost;
}
function itsATie() {
console.log("It's a Tie");
++scores.tie;
//document.getElementById('demo').innerHTML="It's a Tie";
//++scores.tie;
}
(({
// an ad hoc generated
// object based lookup table ...
paper_rock: playerWins,
rock_scissor: playerWins,
scissor_paper: playerWins,
rock_paper: computerWins,
scissor_rock: computerWins,
paper_scissor: computerWins,
// ... which immediately gets
// accessed by a composed key ...
// ... with tie fallback ...
// ... and invoked.
}[ [player, computer].join('_') ]) ?? itsATie).call();
}
const user = {
scoreCounts: {
won: 0,
lost: 0,
tie: 0,
},
};
console.log('user ... before evaluate ...', user);
evaluateResult(user.scoreCounts, 'rock', 'paper');
evaluateResult(user.scoreCounts, 'paper', 'rock');
evaluateResult(user.scoreCounts, 'paper', 'paper');
evaluateResult(user.scoreCounts, 'scissor', 'scissor');
console.log('user ... after evaluate ...', user);.as-console-wrapper { min-height: 100%!important; top: 0; }
发布于 2022-09-24 06:15:37
函数evaluateResult(a,b){
var user=JSON.parse(localStorage.getItem('person'));
if(a == 'rock' && b == scissor){
document.getElementById('demo').innerHTML="You Win";
userpoints=userpoints+1;
document.getElementById('userscore').innerHTML=userpoints;
user.userPoints+=1;
localStorage.setItem('person',JSON.stringify(user));
}//////////////////////////////////////////////////////////////
<<<>>>上面的代码仅表示第一种情况,这说明了如何在不使用另一个键的情况下存储和更新对象的值。
https://stackoverflow.com/questions/73809831
复制相似问题