簡體   English   中英

以更好的方式處理 return 語句

[英]Handle return statement in a better way

那是我的 function:

 const checkifHaveBomb = (column, row) => {
            let isBomb = false
            activeBombContainer.forEach(element => {

                if (element.column === column && element.row === row) {
                    isBomb = true;
                    return;
                }
            })
            if (isBomb) return true;
            else
                return false;
        }

這是我的第一次嘗試:

 const checkifHaveBomb = (column, row) => {

            activeBombContainer.forEach(element => {
                if (element.column === column && element.row === row) {
                   
                    return true;
                }
            })
            
            return false;
        }

我在想退貨將結束 function,但我沒有工作。 我想 return 語句適用於 forEach 而不是 checkifHaveBomb。

有更好的方法來寫這個嗎?

問題

return結束 function, forEach只為每個元素調用 function

解決方案

一些

如果你想完成,你可以嘗試使用some並返回true

const checkifHaveBomb = (column, row) => {
  let isBomb = false
  activeBombContainer.some(element => {

    if (element.column === column && element.row === row) {
      isBomb = true;
      return true;
    }
  })
  if (isBomb) return true;
  else return false;
}

甚至更短:

const checkifHaveBomb = (column, row) => {
  return activeBombContainer.some(element => {
    if (element.column === column && element.row === row) {
      isBomb = true;
      return true;
    }
  })
}

循環語句

您也可以只使用普通的for..of循環

const checkifHaveBomb = (column, row) => {
  for (const element of activeBombContainer) {
    if (element.column === column && element.row === row) {
      return true
    }
  }
  return false
}

您可以使用Array.prototype.some代替forEach

const checkifHaveBomb = (column, row)
=> activeBombContainer.some( element=>element.column === column && element.row === row);

正如您所推測的,每次調用后都會丟棄Array.prototype/forEach的參數 function 的返回值。

您希望遍歷activeBombContainer數組,直到條件返回true 聽起來像find function 可能適合您的需求:

find() 方法返回提供的數組中滿足提供的測試 function 的第一個元素。 如果沒有值滿足測試 function,則返回 undefined。

您應該能夠如下編寫 function

checkifHaveBomb = (column, row) => {
    return activeBombContainer.find(element => {
        return element.column === column && element.row === row
    })
}

或者,您可以使用一些function 因為它返回boolean值。

checkifHaveBomb = (column, row) => {
    return activeBombContainer.some(element => {
        return element.column === column && element.row === row
    })
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM