我正在运行以下内容:
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
并且不存在某些August, 22, 1945
或,则不会在控制台中给出错误。这是我要实现的目标:
1945年5月19日
1945年8月22日
有时我什至会像那样去相反的月份和日期。
不知道该如何处理。
最佳答案
如果您尝试这样的事情怎么办?
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
要摆脱“-”和/或插入换行符,您可以轻松地修改循环以进行处理。这样可以使您的代码保持干净/简单,并允许轻松进行更改,这些更改将来会影响此类型的所有对象。
小提琴:https://jsfiddle.net/n2s7nwju/1/