我正在运行以下内容:
if (doSelect('Location').length > 0 && doSelect('Date').length > 0 || doSelect('State').length > 0 && doSelect('Date').length > 0) {
var dateText = doSelect("Date").siblings('td').text().split(/\s+/g);
console.log(dateText);
$wikiDOM.find('.nourlexpansion').remove();
$wikiDOM.find("#coordinates").parent().remove();
$('#results').append('<li>' + curTitle + "<br>" + doSelect("Location").siblings('td').text() + '<br>' +
dateText[0] + " " + dateText[1].replace(/,/g , ' ') + " " + dateText[2].replace(/;/g , ' ') + " " + dateText[3].replace(/,/g , ' ') + " " + dateText[4] + " " + dateText[5] + " " + '</li>');
}
此行定义了可能的结果:
var dateText = doSelect("Date").siblings('td').text().split(/\s+/g);
控制台可以给出:
["19", "May", "1945", "–", "22", "August", "1945"]
所以要打印这些日期我会这样做:
dateText[0] + " " + dateText[1].replace(/,/g , ' ') + " " + dateText[2].replace(/;/g , ' ') + " " + dateText[3].replace(/,/g , ' ') + " " + dateText[4] + " " + dateText[5] + "
给出了:
1945年5月19日 - 8月22日
但有时我没有所有这些日期,因此dateText[3]
可能不存在尽可能多的dateText[9]
不仅如此,我使用.replace(/,/g , ' ')
或.replace(/,/g , ' ')
,因为有时日期会像19,May,1945
一样堆叠在一起,我还需要删除dash
或comma
或semicolumn
基本上我尝试以一致的方式执行此操作,如果不需要某些[N]
或.replace
且不存在,则不会在控制台中出错。
这就是我想要实现的目标:
1945年5月19日
1945年8月22日
有时我甚至会去月份和对面的日期,如August, 22, 1945
。
我不确定如何处理这个问题。
答案 0 :(得分:1)
如果你尝试这样的话怎么办?
var dateText = ["19", "May", "1945", "–", "22", "August", "1945"];
var d = '';
for(var i = 0; i < dateText.length; i++) {
d += dateText[i] + ' ';
}
console.log(d);
控制台输出:19 May 1945 – 22 August 1945
摆脱&#39; - &#39;和/或插入换行符,您可以轻松修改循环来处理它。这样可以使您的代码保持干净/简单,并允许轻松更改,这将在未来影响此类型的所有对象。