如何检查名称是否已在此列表中?
How can I check if a name is already in this list?
所有这些都是通过以下方式触发的:
if (message.content.toLowerCase().startsWith('test')) {
我有一个 .txt 文件来存储文件系统的所有内容:
leaderboard = (fs.readFileSync('leaderboard.txt', 'utf-8'))
我需要帮助检查某个名称是否已在该列表中。因此,如果某人的名字未包含在该列表中,则应将他添加到底部,得分为 1 1,exampleUser
如果用户已包含在该列表中,则应增加和更新他的分数 2,exampleUser
然后 .txt 应该更新为:
fs.writeFileSync('leaderboard.txt', leaderboard, 'utf8')
我正在尝试像这样存储所有使用“测试”的用户:
1,exampleUser1
54,exampleUser2
34,exampleUser3
4,exampleUser4
65,exampleUser5
56,exampleUser6
如果一个不在列表中的新用户说“测试”,他应该被添加到底部,因为他说了一次“测试”,得分为 1。每当有人说“测试”时,他们的分数应该增加,或者如果他们不在列表中,他们应该加上 1 分。
我正在使用 V11。
我没有完全得到你想要的,但你可以尝试以下步骤:
1:你可以使用find()方法获取你要找的名字,并把它存储在一个变量中。
2:使用filter方法将剩下的存入一个新的变量
3: 然后使用 concat 方法添加您在步骤 1 中找到的新变量,或者如果名称已经存在则只添加一个 1。
例如:
const 变化 = 1 ? 2.concat(1) : 2.filter(存在=> exist.votes += 1)
这个功能或许可以解决您的问题
function updateNameAndScore(fileData, checkingName) {
let data = fileData.split('\n');
let names = [];
let scores = [];
let leaderboard = "";
data.forEach(d => {
let values = d.split(",");
names.push(values[1])
scores.push(Number(values[0]))
});
if (names.includes(checkingName))
scores[names.indexOf(checkingName)]++;
else {
names.push(checkingName);
scores.push(1)
}
leaderboard += (scores[0] + ',' + names[0]);
for(let i = 1; i < scores.length; i++)
leaderboard += ('\n' + scores[i] + ',' + names[i])
return leaderboard;
}
fileData
是使用 fs
读取的数据 module.It 将采用 '1,user1\n5,user2\n2,user3'
的形式(如您所述)。
而 checkingName
是您要搜索的名称。它将类似于 'user4'
在此实现中,names
数组中任何名称的索引将是 scores
数组中与该名称关联的分数的索引。
所有这些都是通过以下方式触发的:
if (message.content.toLowerCase().startsWith('test')) {
我有一个 .txt 文件来存储文件系统的所有内容:
leaderboard = (fs.readFileSync('leaderboard.txt', 'utf-8'))
我需要帮助检查某个名称是否已在该列表中。因此,如果某人的名字未包含在该列表中,则应将他添加到底部,得分为 1 1,exampleUser
如果用户已包含在该列表中,则应增加和更新他的分数 2,exampleUser
然后 .txt 应该更新为:
fs.writeFileSync('leaderboard.txt', leaderboard, 'utf8')
我正在尝试像这样存储所有使用“测试”的用户:
1,exampleUser1
54,exampleUser2
34,exampleUser3
4,exampleUser4
65,exampleUser5
56,exampleUser6
如果一个不在列表中的新用户说“测试”,他应该被添加到底部,因为他说了一次“测试”,得分为 1。每当有人说“测试”时,他们的分数应该增加,或者如果他们不在列表中,他们应该加上 1 分。
我正在使用 V11。
我没有完全得到你想要的,但你可以尝试以下步骤:
1:你可以使用find()方法获取你要找的名字,并把它存储在一个变量中。
2:使用filter方法将剩下的存入一个新的变量
3: 然后使用 concat 方法添加您在步骤 1 中找到的新变量,或者如果名称已经存在则只添加一个 1。
例如: const 变化 = 1 ? 2.concat(1) : 2.filter(存在=> exist.votes += 1)
这个功能或许可以解决您的问题
function updateNameAndScore(fileData, checkingName) {
let data = fileData.split('\n');
let names = [];
let scores = [];
let leaderboard = "";
data.forEach(d => {
let values = d.split(",");
names.push(values[1])
scores.push(Number(values[0]))
});
if (names.includes(checkingName))
scores[names.indexOf(checkingName)]++;
else {
names.push(checkingName);
scores.push(1)
}
leaderboard += (scores[0] + ',' + names[0]);
for(let i = 1; i < scores.length; i++)
leaderboard += ('\n' + scores[i] + ',' + names[i])
return leaderboard;
}
fileData
是使用 fs
读取的数据 module.It 将采用 '1,user1\n5,user2\n2,user3'
的形式(如您所述)。
而 checkingName
是您要搜索的名称。它将类似于 'user4'
在此实现中,names
数组中任何名称的索引将是 scores
数组中与该名称关联的分数的索引。