首页 > 解决方案 > 为什么在 .slice() 和连接的这个用例中混合引号时不需要加 1?

问题描述

本教程中,“从旧部分制作新字符串”部分给出了将不需要的数据剪切为火车站名称的人类可读格式的任务。
eg
原始字符串:MAN675847583748sjt567654;Manchester Piccadilly
所需字符串:MAN: Manchester Piccadilly

const list = document.querySelector('.output ul');
list.innerHTML = '';
let stations = ['MAN675847583748sjt567654;Manchester Piccadilly',
                'GNF576746573fhdg4737dh4;Greenfield',
                'LIV5hg65hd737456236dch46dg4;Liverpool Lime Street',
                'SYB4f65hf75f736463;Stalybridge',
                'HUD5767ghtyfyr4536dh45dg45dg3;Huddersfield'];

for (let i = 0; i < stations.length; i++) {
  let input = stations[i];
  let code = input.slice(0,3);
  let semiC = input.indexOf(';');
  let name = input.slice(semiC + 1);
  let result = code + ': ' + name;
  let listItem = document.createElement('li');
  listItem.textContent = result;
  list.appendChild(listItem);
}

我的解决方案:

let stations = ['MAN675847583748sjt567654;Manchester Piccadilly',
                'GNF576746573fhdg4737dh4;Greenfield',
                'LIV5hg65hd737456236dch46dg4;Liverpool Lime Street',
                'SYB4f65hf75f736463;Stalybridge',
                'HUD5767ghtyfyr4536dh45dg45dg3;Huddersfield'];
for (let i = 0; i < stations.length; i++) {
  let input = stations[i];
  let stationAbbr = input.slice(0,3);
  let semicolon = input.indexOf(';');  
  let stationName = input.slice(semicolon);
  let station = stationAbbr + ': " + stationName;
  let listItem = document.createElement('li');
  listItem.textContent = station;
  list.appendChild(listItem);
}

教程解决方案:

for (let i = 0; i < stations.length; i++) {
  let input = stations[i];
  let code = input.slice(0,3);
  let semiC = input.indexOf(';');
  let name = input.slice(semiC + 1);
  let result = code + ': ' + name;
  let listItem = document.createElement('li');
  listItem.textContent = result;
  list.appendChild(listItem);
}

本教程的构造在result功能上等同于我的station.
但是,正如您所看到的,我在声明时犯了混合单引号/双引号的错误station
这实际上产生了预期的结果,但修复引号会在输出中间添加一个分号。
为什么在这里混合引号消除了+ 1stationNameand中指定的需要name

标签: javascriptarraysconcatenationsliceindexof

解决方案


转到教程,您的代码块不是有效的 javascript 并且无法正常工作。您可以通过在控制台中粘贴代码来确认这一点。以 ' 开头的字符串要求它以 ' 结尾。使用 " 并没有表示它结束字符串,而是成为它的一部分。

当代码无法执行时,教程输入窗口似乎不会提醒您任何错误或更新输出。我可以通过选择显示解决方案然后在其上粘贴您的代码来复制您的问题。正确的答案仍然存在,但由于解决方案代码。

需要 + 1 来选择分号后面的字符,这将是站名的开头。


推荐阅读