如何用条件输出对象?

时间:2017-07-27 12:41:37

标签: javascript jquery

我正在运行以下内容:

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;

给出了:

1945年5月19日 - 8月22日

但有时我没有所有这些日期,因此dateText[3]可能不存在尽可能多的dateText[9]

不仅如此,我使用.replace(/,/g , '&nbsp; ').replace(/,/g , '&nbsp; '),因为有时日期会像19,May,1945一样堆叠在一起,我还需要删除dashcommasemicolumn

基本上我尝试以一致的方式执行此操作,如果不需要某些[N].replace且不存在,则不会在控制台中出错。

这就是我想要实现的目标:

  

1945年5月19日

     

1945年8月22日

有时我甚至会去月份和对面的日期,如August, 22, 1945

我不确定如何处理这个问题。

1 个答案:

答案 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;和/或插入换行符,您可以轻松修改循环来处理它。这样可以使您的代码保持干净/简单,并允许轻松更改,这将在未来影响此类型的所有对象。

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