为什么在 .slice() 和串联的用例中混合引号时不需要添加 1?



在本教程中,"从旧部件制作新字符串"一节给出了剪切不需要的数据的任务,以实现人类可读的火车站名称格式。
例如
原始字符串:MAN675847583748sjt567654;曼彻斯特皮卡迪利
所需字符串: 曼彻斯特皮卡迪利

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时犯了混合单引号/双引号的错误。
这实际上会产生所需的结果,但修复引号会在输出中间添加一个分号。
为什么这里的混合引号消除了在stationNamename中指定+ 1的需要?

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

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

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

最新更新