Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回带条件的字符串_Javascript - Fatal编程技术网

Javascript 返回带条件的字符串

Javascript 返回带条件的字符串,javascript,Javascript,如果用户输入是陷阱(我发送了,它们是陷阱),那么下面是一个返回字符串的代码。解释对我来说是另一个问题,所以让我们看看代码: let trapSt='I was sent=I sent。他们是=他们是“;//正确版本=陷阱版本 //准备trapSt并制作阵列 trapSt=trapSt.toLowerCase().replace(/\s+/g,“”).split(“.”).map(s=>s.trim()); trapSt=trapSt.filter(s=>s); 控制台日志(trapSt); /

如果用户输入是陷阱(我发送了,它们是陷阱),那么下面是一个返回字符串的代码。解释对我来说是另一个问题,所以让我们看看代码:

let trapSt='I was sent=I sent。他们是=他们是“;//正确版本=陷阱版本
//准备trapSt并制作阵列
trapSt=trapSt.toLowerCase().replace(/\s+/g,“”).split(“.”).map(s=>s.trim());
trapSt=trapSt.filter(s=>s);
控制台日志(trapSt);
//如果用户输入陷阱,则返回字符串的整个部分
函数findTrap(str){
让trapPairs=trapSt.map(s=>s.split('=');
控制台日志(trapPairs)
让matchI=trapPairs.findIndex(([first])=>first==str);
return trapSt[matchI]| | false;
};
让findTrapResult=findTrap('i was sent');//应该返回false
//让findTrapResult=findTrap('i sent');//应该返回“i was sent=i sent”,因为这是一个陷阱

console.log(findTrapResult)看起来您在比较
trapPairs
中的错误值。您正在以只包含第一个元素(左侧)的方式分解参数。如果要在equals的右侧匹配,则需要数组中的第二个元素。您可以通过以下方式实现:

函数findTrap(str){
让trapPairs=trapSt.map(s=>s.split('=');
控制台日志(trapPairs)
让matchI=trapPairs.findIndex(([first,second])=>second==str);
return trapSt[matchI]| | false;
};

看起来您在比较
trapPairs
中的错误值。您正在以只包含第一个元素(左侧)的方式分解参数。如果要在equals的右侧匹配,则需要数组中的第二个元素。您可以通过以下方式实现:

函数findTrap(str){
让trapPairs=trapSt.map(s=>s.split('=');
控制台日志(trapPairs)
让matchI=trapPairs.findIndex(([first,second])=>second==str);
return trapSt[matchI]| | false;
};

rfestag的答案会起作用

我会提出另一种可能的解决方案:将陷阱版本视为一个键,以便可以映射到结果。我们可以从陷阱字符串中创建一个对象并查找结果,如果不匹配,则返回
false

const trapSt='I was sent=I sent。他们是
const traps=Object.fromEntries(
trapSt
.toLowerCase()
.split(“.”)
.map((fullStr)=>{
常量trap=fullStr.split('=')[1].trim()
return[trap,fullStr.trim()]
}),
)
const findTrap=(str)=>陷阱[str]| | false
log(findTrap('i was sent'))

log(findTrap('i sent'))
rfestag的答案会起作用

我会提出另一种可能的解决方案:将陷阱版本视为一个键,以便可以映射到结果。我们可以从陷阱字符串中创建一个对象并查找结果,如果不匹配,则返回
false

const trapSt='I was sent=I sent。他们是
const traps=Object.fromEntries(
trapSt
.toLowerCase()
.split(“.”)
.map((fullStr)=>{
常量trap=fullStr.split('=')[1].trim()
return[trap,fullStr.trim()]
}),
)
const findTrap=(str)=>陷阱[str]| | false
log(findTrap('i was sent'))
console.log(findTrap('i sent'))