我已经玩了几天精灵宝可梦API了。
我有一个列出了所有精灵宝可梦的数组,还有一个类似于'<@user_id pidgeotto>‘的字符串。
我想根据一个数组检查这个字符串,并获得确切的名称
我的问题是,我也会得到一些东西,比如pidgeot。
如何才能将数组与字符串完全匹配,并且只记录一个名称?
let pokemonArray = ["pidgeot", "pidgeotto", "charizard", "goldeen"];
let y = '<@user_id> pidgeotto';
function handleMessage(message) {
for (let i = 0; i <= message.length; i++) {
if (y.includes(message[i])) {
console.log(message[i])
}
}
}
handleMessage(pokemonArray);
没有错误,只是没有得到我想要的结果。
发布于 2019-07-21 23:57:53
在空格处拆分y字符串,并使用===比较查看第二部分是否准确
let pokemonArray = ["pidgeot", "pidgeotto", "charizard", "goldeen"];
let y = '<@user_id> pidgeotto';
let yName = y.split(' ')[1];
function handleMessage(message) {
for (let i = 0; i <= message.length; i++) {
if (message[i] === yName ) {
console.log(message[i])
}
}
}
handleMessage(pokemonArray);
发布于 2019-07-22 00:06:48
您可以这样做,以避免PokemonArray中的第一个元素
let pokemonArray = ["pidgeot", "pidgeotto", "charizard", "goldeen"];
let y = '<@user_id> pidgeotto';
function handleMessage(message) {
for(let i = 0; i <= message.length; i++) {
let splitedY = y.split(message[i])
if(splitedY.length > 1 && splitedY[1] !== "") {
console.log(message[i])
}
}
}
handleMessage(pokemonArray);
发布于 2019-07-22 03:29:01
下面是这方面的一个代码行:
const match = pokemonArray.find(pokemon => new RegExp(`\\b${pokemon}\\b`, `i`).test(y));只需使用array find方法并使用regex匹配字符串即可。希望这能有所帮助:)
https://stackoverflow.com/questions/57134754
复制相似问题