亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用開關的功能未返回所需值

使用開關的功能未返回所需值

蠱毒傳說 2021-05-05 17:46:41
我是JS的新手,并且在使用此特定代碼時遇到了一些麻煩。它應該是使用switch語句的Rock,Paper和Scissors,但是它沒有返回繪制值,而是返回了其他錯誤的值:function RPS(ch1, ch2){    switch (ch1, ch2){        case ('r' && 'p') || ('p' && 'r'):            return 'p';            break;        case ('r' && 's') || ('s' && 'r'):            return 'r';            break;        case ('p' && 's') || ('s' && 'p'):            return 's';            break;        default:            return 'draw';    }}console.log(RPS('s', 's'));因此,使用“ s”和“ s”進行測試時,我期望的是“ draw”,但返回的是“ r”。我做錯了什么?
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

以下是您的代碼錯誤。

  • switch語句不能有兩個變量。ch1, ch2將評估為ch2。

  • 'r' && 'p'將始終評估為true。因為rp都是真實的價值觀。

您可以按照以下步驟進行操作:

  • 創建一個具有鍵作為返回值的對象p,q,r。它們的值將是要在原始代碼中檢查的兩個值的數組。例如p將有數組['r','p']

  • Object.entries在對象上。并find()在條目上使用。

  • 內部find()將值ch1ch2數組按兩種順序放置,即[ch1,ch2][ch2,ch1]

  • 使用以下命令檢查數組中的任何一個是否等于對象的任何值 every()

  • 如果是,則返回密鑰,否則返回 'draw'

function RPS(ch1, ch2){

    

    const obj = {

      p:['r','p'],

      r:['r','s'],

      q:['p','s']

    }

    let entry = Object.entries(obj)

                    .find(([k,v]) =>

                        [ch1,ch2].every((x,i) => x === v[i]) || 

                        [ch2,ch1].every((x,i) => x === v[i])

                    )

    return entry ? entry[0] : 'draw';

}


console.log(RPS('s','p'))


查看完整回答
反對 回復 2021-05-20
  • 1 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號