【问题标题】:Comparing Given String To An Array sub property将给定字符串与数组子属性进行比较
【发布时间】:2020-09-17 06:07:12
【问题描述】:

我正在构建一个 players 数组,当在 players 内的 name 属性中找不到 solver 时,将添加该数组

let players = []

let solver = 'Any Name Given'

// This if statement is the issue : How to check the name properties and compare to solver 
// If the solver's name is already in players : add +1 point
if(players.includes(solver)){

   // Give The Player +1 point

   return console.log('Player Exists')

 } else {

   // Add The newPlayer to players with a starting point 
   let newPlayer = [name = solver, points = 1]
   players.push(newPlayer)

}

如何比较 solver 内的 nameplayers。我试过 players[name]players.name 没有运气

【问题讨论】:

    标签: javascript arrays include


    【解决方案1】:

    在您的else 中,您应该拥有:

    const newPlayer = {name: solver, points: 1};
    

    即一个对象,而不是一个数组。这样你就有了 players 数组,它总是有 player 对象

    现在,由于您拥有的是一个对象数组,因此您需要使用 some 之类的东西来查找是否存在符合您条件的对象:

    if 条件可以替换为:

    if (players.some(player => player.name === solver))
    

    我刚刚看到你想将找到的玩家的积分增加1。在这种情况下,您应该使用find 而不是some,以便您可以访问找到的播放器并更新其points 属性。这样做:

    const player = players.find(player => player.name === solver);
    
    if (player) {
        player.points++;
    } else {
        const newPlayer = {name: solver, points: 1};
        players.push(newPlayer)
    }
    
    

    【讨论】:

    • 谢谢!现在剩下的唯一问题是如何在if语句中获取现有对象的points属性来添加一个点
    • @Elitezen 看到这部分问题较晚,更新了答案以显示如何增加找到的玩家的 points 属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 2016-10-17
    相关资源
    最近更新 更多