2017-07-27 52 views
0

我运行的是以下几点:如何使用条件输出对象?

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] + "&nbsp; " + dateText[1].replace(/,/g , '&nbsp; ') + "&nbsp; " + dateText[2].replace(/;/g , '&nbsp; ') + "&nbsp;" + dateText[3].replace(/,/g , '&nbsp; ') + "&nbsp; " + dateText[4] + "&nbsp; " + dateText[5] + "&nbsp; " + '</li>'); 
} 

这一行定义可能的结果:

var dateText = doSelect("Date").siblings('td').text().split(/\s+/g); 

控制台能给:

["19", "May", "1945", "–", "22", "August", "1945"] 

所以打印这些日期我做的:

dateText[0] + "&nbsp; " + dateText[1].replace(/,/g , '&nbsp; ') + "&nbsp; " + dateText[2].replace(/;/g , '&nbsp; ') + "&nbsp;" + dateText[3].replace(/,/g , '&nbsp; ') + "&nbsp; " + dateText[4] + "&nbsp; " + dateText[5] + "&nbsp; 

其中给出:

19 1945年5月 - 8月22日

但有时候,我不知道所有这些日期,以便dateText[3]可能不存在一样多,因为它可能存在dateText[9]

不能简单地认为,我用.replace(/,/g , '&nbsp; ').replace(/,/g , '&nbsp; ')因为有时日期出来是所有堆在一起像19,May,1945,我还需要删除dashcommasemicolumn

基本上我试图以一致的方式来完成它,并且如果某些[N].replace不需要且不存在,则不会在控制台中给出错误。

这就是我想实现:1945年

1945年8月22日

有时我甚至去月份和日期相反像August, 22, 1945的。

我不知道如何解决这个问题。

+0

'时刻(日期).format( “DDMMMMYYYY”) - > 22 1945'月)检查出[momentJS(https://momentjs.com) –

+0

意志时刻认识' 1945年5月19日至8月22日?或1945年5月19日至8月22日? –

回答

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

要摆脱“ - ”和/或插入一个换行符,你可以很容易地修改循环来处理这个问题。这样可以保持代码清洁/简单,并且允许轻松更改,这将会影响将来所有此类对象。

小提琴:https://jsfiddle.net/n2s7nwju/1/

+0

去测试它,但它看起来非常有前途,正是我所需要的 –