首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在本地存储中存储和更新对象的值,而不使用Javascript创建另一个键

如何在本地存储中存储和更新对象的值,而不使用Javascript创建另一个键
EN

Stack Overflow用户
提问于 2022-09-22 05:45:06
回答 2查看 41关注 0票数 -1
代码语言:javascript
复制
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给出一个输出时,我想在每次迭代时将结果存储在本地存储空间中,是否可以在每次单击时更新每个键的值?

EN

回答 2

Stack Overflow用户

发布于 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 } }__。”

..。并将以上所建议的改进应用到可执行/运行代码示例中.

代码语言:javascript
复制
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);
代码语言:javascript
复制
.as-console-wrapper { min-height: 100%!important; top: 0; }

票数 0
EN

Stack Overflow用户

发布于 2022-09-24 06:15:37

函数evaluateResult(a,b){

代码语言:javascript
复制
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));
}

//////////////////////////////////////////////////////////////

<<<>>>上面的代码仅表示第一种情况,这说明了如何在不使用另一个键的情况下存储和更新对象的值。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73809831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档