如何移除JS查询奥运运动员姓名返回值中引号与首字母间的多余空格
问题根因
- 你从数据源取出的
Athlete First Name字段内容本身自带前置空格,拼接时直接保留了该空白字符 - 也有可能同时存在
Athlete Last Name字段带尾部空格的情况,建议同时处理
修复代码
对取出的姓名字段做首尾去空白处理即可,修改后的函数如下:
function FullName(id){ var firstName = getColumn("Olympic Medals", "Athlete First Name"); var lastName = getColumn("Olympic Medals", "Athlete Last Name"); var ID = getColumn("Olympic Medals", "id"); for(var i=0; i<firstName.length; i++){ if(ID[i] == id){ // 先对两个字段分别做trim去首尾空白,再拼接 return firstName[i].trim() + " " + lastName[i].trim(); } } return "Not found"; }
如果需要兼容极端场景(比如某条数据只有名没有姓、或只有姓没有名),可以用更稳妥的写法,避免拼接出多余的空格:
function FullName(id){ var firstName = getColumn("Olympic Medals", "Athlete First Name"); var lastName = getColumn("Olympic Medals", "Athlete Last Name"); var ID = getColumn("Olympic Medals", "id"); for(var i=0; i<firstName.length; i++){ if(ID[i] == id){ // 先逐个去空白,过滤掉空值后再用空格拼接 return [firstName[i], lastName[i]] .map(name => name ? name.trim() : '') .filter(Boolean) .join(' '); } } return "Not found"; }
验证
修改后重新执行测试代码console.log(FullName("1", true));,控制台输出的姓名就会去掉前置多余空格,显示为"Alexandre Despatie"。
内容的提问来源于stack exchange,提问作者Grettaggn
相关产品推荐
相关产品推荐

