javascript - 返回带有条件的字符串
问题描述
如果用户输入是一个陷阱,这是一个返回字符串的代码(我发送了,他们是)。解释对我来说是另一个问题,所以让我们看一下代码:
let trapSt = 'I was sent = I sent. they are = they is'; // correct version = trap version
// prepare the trapSt and make an array
trapSt = trapSt.toLowerCase().replace(/\s+/g, " ").split(".").map(s => s.trim());
trapSt = trapSt.filter(s => s);
console.log(trapSt);
// return the whole part of string if user inputs the trap
function findTrap(str) {
let trapPairs = trapSt.map(s => s.split(' = '));
console.log(trapPairs)
let matchI = trapPairs.findIndex(([first]) => first === str);
return trapSt[matchI] || false;
};
let findTrapResult = findTrap('i was sent'); // should return false
//let findTrapResult = findTrap('i sent'); // should return "i was sent = i sent" because it's a trap
console.log(findTrapResult);
问题是代码与我想要的完全相反,我需要一个人来修复它。
解决方案
rfestag 的回答会奏效。
我会提出另一种可能的解决方案:将陷阱版本视为键,以便您可以映射到结果。我们可以从陷阱字符串中创建一个对象并查找结果,如果没有匹配,则返回false
const trapSt = 'I was sent = I sent. they are = they is'
const traps = Object.fromEntries(
trapSt
.toLowerCase()
.split('.')
.map((fullStr) => {
const trap = fullStr.split('=')[1].trim()
return [trap, fullStr.trim()]
}),
)
const findTrap = (str) => traps[str] || false
console.log(findTrap('i was sent'))
console.log(findTrap('i sent'))
推荐阅读
- javascript - MailApp 谷歌脚本 Html 模板脚本
- python - pandas 数据框的继承和“超级”
- ubuntu - 如何使用 Conda 在 Google Colab 中为 antiSMASH 创建虚拟环境?
- javascript - JavaScript 通过过滤对象值从现有创建新数组
- python - 使用python转换带大括号的字符串
- ios - xcodebuild 构建命令在 Xcode 11.5 中失败
- javascript - VueJs 方法是直接改变一个响应
- postscript - 覆盖 postscript /setcmykcolor
- mysql - 我应该索引具有低“真”基数 MySQL 的布尔字段吗?
- python - 用漂亮的汤,grequests 进行异步 Webscraping