javascript - 将给定字符串与数组子属性进行比较
问题描述
我正在构建一个数组,当在里面的属性中找不到players
时将添加该数组solver
name
players
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
比较name
. players
我试过了players[name]
,players.name
但没有运气
解决方案
在您的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)
}
推荐阅读
- angular - 如何在Angular的TypeScript中检查字符串是否包含特定单词
- react-native - Agora.io React-native 课堂和白板集成
- java - spring ioc 真的是基于 Reflection 中的 setAccessible API 吗?
- r - R 闪亮 - ggplot/ggforce 形状呈现高度像素化,如何抗锯齿?
- gcc - 使用静态库时,GNU ld 生成没有符号的 ELF
- android - 更改权限给出错误:您必须在调用 getGraph() 之前调用 setGraph()
- java - 无法运行 Hybris(加速器)服务器
- javascript - 有没有办法搜索(而不是过滤)到 AG-GRID 中的第一个匹配行?
- amazon-web-services - 我可以在没有域名的 AWS 中拥有 ssl 证书吗?
- java - 对象重用 - 改变相同的对象 - 在 Flink 运算符中