天气命令对多词组成的地名无法正确识别温度单位参数如何修复?
你当前代码的问题在于固定读取args[1](参数数组的第二个元素)作为温度单位的判断依据,但包含空格的地名会被拆分为多个参数数组元素,此时温度单位是参数数组的最后一个元素,而非固定索引的args[1],因此多空格地名加单位的查询场景会判定失败。
你可以先判断参数数组的最后一个元素是否为温度单位标识,再将对应位置前的所有参数拼接为完整地名即可,修改后的参考代码如下:
// 先取最后一个参数判断单位 const lastArg = args[args.length - 1].toLowerCase(); let Degree, Deg, locationArgs; if (lastArg === 'c') { Degree = "Celsius"; Deg = "C"; // 去掉最后一个单位参数,剩余为地名参数 locationArgs = args.slice(0, args.length - 1); } else if (lastArg === 'f') { Degree = "Fahrenheit"; Deg = "F"; locationArgs = args.slice(0, args.length - 1); } else { Degree = "Celsius"; Deg = "C"; // 没有单位参数,所有参数都是地名 locationArgs = args; } // 拼接成完整地名 const location = locationArgs.join(' ');
之后你把拼接得到的location变量传给weather-js的查询接口即可同时兼容单空格地名、多空格地名、带单位/不带单位的所有查询场景。
内容的提问来源于stack exchange,提问作者Mohid Mushtaq
相关产品推荐
相关产品推荐

