在此用例.slice()和并置中混合使用引号时,为什么没有必要加1?

问题描述 投票:0回答:2

this tutorial中,“从旧零件中制造新的琴弦”部分给出了将不需要的数据切出为火车站名称的人类可读格式的任务。例如原始字符串:MAN675847583748sjt567654; Manchester Piccadilly期望的字符串:MAN:曼彻斯特皮卡迪利

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时,我犯了混合单/双引号的错误。这实际上会产生所需的结果,但是固定引号会在输出中间添加分号。为什么混合引号here不需要在+ 1stationName中指定name

javascript arrays concatenation slice indexof
2个回答
0
投票

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

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

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


0
投票

DeludedFool,请在控制台中运行您的代码和教程代码,并检查stationName和name的结果。

请结帐1)gist

© www.soinside.com 2019 - 2024. All rights reserved.