javascript - For循环,即使显示多次,也只删除1个值|| 不和谐.js
问题描述
我正在使用 MYSQL 作为我的命令数据库。我使用了一个 for 循环来查找用户给出的值。
^pet add <rarity> <type> | ^pet add common Black
我花了 7 个小时弄清楚如何让 for 循环然后在昨晚重写它。
我想遍历表列“common”并搜索用户输入的类型。
就像例子一样;如果我想将黑色添加到我的宠物列表中,我只想从表格中删除一个。
我让它在表格中搜索用户想要的类型,但是每次我只想删除一个“黑色”实例时,它要么部分删除它,要么全部删除,要么删除一个“白色”值。
我做了很多测试,我找不到它给我的每个问题的好例子。
我也发现了这个问题,但我相信我已经解决了
if (!rows[0].common.includes(bunPet)) return;
case "common":
let commonCheck = rows[0].common.split(", ");
if (commonCheck.length <= 1) return message.reply('Please get another bun for your Common hold before setting a pet.');
for (i = 0; i < commonCheck.length; i++) {
let commonMatch = commonCheck[i].match(bunPet);
con.query(`SELECT * FROM holds WHERE id = '${message.author.id}'`, (err, rows) => {
let alreadyRan = rows[0].pets;
if (alreadyRan === bunPet) {
return console.log('Already ran')
} else {
con.query(`SELECT * FROM bun WHERE id = '${message.author.id}'`, (err, rows) => {
if (err) throw err;
if (commonMatch) {
sql = `UPDATE bun SET common = '${commonCheck.join(", ")}' WHERE id = ${message.author.id}`;
con.query(sql);
con.query(`SELECT * FROM holds WHERE id = '${message.author.id}'`, (err, rows) => {
if (err) throw err;
sql = `UPDATE holds SET pets = '${bunPet}' WHERE id = '${message.author.id}'`;
con.query(sql);
});
message.reply(`**${bunPet}** is now your current pet!\n**Your last pet has been removed.**`)
}
});
}
});
}
break;
解决方案
在其他 SO 帖子中进行了更多挖掘并找到了解决方法。
而不是使用 for 循环并搜索整个列表并尝试阻止它在每个值上运行;我可以在拼接函数中使用 indexOf 搜索。
case "common":
let commonCheck = rows[0].common.split(", ");
if (commonCheck.length <= 1) return message.reply('Please get another bun for your Common hold before setting a pet.');
commonCheck.splice(commonCheck.indexOf(bunPet), 1);
sql = `UPDATE bun SET common = '${commonCheck.join(", ")}' WHERE id = '${message.author.id}'`;
con.query(sql);
con.query(`SELECT * FROM holds WHERE id = '${message.author.id}'`, (err, rows) => {
if (err) throw err;
sql = `UPDATE holds SET pets = '${bunPet}' WHERE id = '${message.author.id}'`;
con.query(sql);
message.reply(`**${bunPet}** is now your current pet!\n**Your last pet has been removed.**`);
});
break;
推荐阅读
- java - SpringBoot scanBasePackages 在不同的 jar 中找不到存储库
- jquery - JQuery 和 Bootstrap:Bad Nav Dropdown Bug
- python - python:arg_parser 参数添加别名
- swift - 在alamofire中发送数组数组
- xml - 使用 powershell 格式化 csv 中的 xml 字段
- java - 在 Java 10 中获取 ProcessHandle 的退出代码
- pdf-generation - 从 JS 报告创建 pdf 时出错
- xpath - Xpath 匹配特定文本
- java - 排序点[]左右和自上而下
- botframework - Microsoft.Bot.Builder - 偶发错误 - “操作返回了无效的状态代码‘未授权’”