为什么在 .slice() 和连接的这个用例中混合引号时不需要加 1?
Why is it unnecessary to add 1 when mixing quotes in this use case of .slice() and concatenation?
在this tutorial中,"Making new strings from old parts"部分给出了删除不需要的数据以实现火车站名称的人类可读格式的任务。
例如
原始字符串:MAN675847583748sjt567654;曼彻斯特皮卡迪利
所需字符串: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
时犯了混合使用 single/double 引号的错误。
这实际上会产生预期的结果,但固定引号会在输出中间添加一个分号。
为什么混合引号 这里 不需要在 stationName
和 name
中指定 + 1
?
转到教程,您的代码块无效 javascript 并且无法正常工作。您可以通过在控制台中粘贴代码来确认这一点。以 ' 开头的字符串要求它以 ' 结束。使用 " 并没有发出结束字符串的信号,而是成为字符串的一部分。
教程输入 window 似乎不会提醒您任何错误或在代码无法执行时更新输出。我可以通过 select 显示解决方案然后将您的代码粘贴到上面来复制您的问题。正确答案仍然存在,但这是由于解决方案代码。
select分号后的字符需要+1,这将是站名的开始。
在this tutorial中,"Making new strings from old parts"部分给出了删除不需要的数据以实现火车站名称的人类可读格式的任务。
例如
原始字符串:MAN675847583748sjt567654;曼彻斯特皮卡迪利
所需字符串: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
时犯了混合使用 single/double 引号的错误。
这实际上会产生预期的结果,但固定引号会在输出中间添加一个分号。
为什么混合引号 这里 不需要在 stationName
和 name
中指定 + 1
?
转到教程,您的代码块无效 javascript 并且无法正常工作。您可以通过在控制台中粘贴代码来确认这一点。以 ' 开头的字符串要求它以 ' 结束。使用 " 并没有发出结束字符串的信号,而是成为字符串的一部分。
教程输入 window 似乎不会提醒您任何错误或在代码无法执行时更新输出。我可以通过 select 显示解决方案然后将您的代码粘贴到上面来复制您的问题。正确答案仍然存在,但这是由于解决方案代码。
select分号后的字符需要+1,这将是站名的开始。