如何从js数组中查找具体日期?

时间:2017-12-04 07:24:21

标签: javascript

我的data.js文件中有这个数组。我想使用javascript找到从其他html文件到data.js文件的具体日期。

例如:

  

以下是搜索日期

     

var searchDate = '12 -25-2017';

     

我想从 data.js 文件(变量名称: jpHolidays )中搜索该日期并显示在html或console.log()中。

我在谷歌搜索,我没有找到如何找到具体的日期。请帮帮我。

var jpHolidays = {
     '01-01-2017' : '<span>お正月 <br> New Year\'s Day</span>',
     '01-02-2017' : '<span>お正月 <br> New Year\'s Day observed</span>',
     '01-09-2017' : '<span>成人の日 <br> Coming of Age Day</span>',
     '02-11-2017' : '<span>建国記念日 <br> National Foundation Day</span>',
     '03-20-2017' : '<span>春分の日 <br> Vernal Equinox Day</span>',
     '04-29-2017' : '<span>昭和の日 <br> Shōwa Day</span>',
     '05-03-2017' : '<span>憲法記念日 <br> Constitution Memorial Day</span>',
     '05-04-2017' : '<span>みどりの日 <br> Greenery Day</span>',
     '05-05-2017' : '<span>こどもの日 <br> Children\'s Day</span>',
     '07-17-2017' : '<span>海の日 <br> Marine Day / Ocean Day</span>',
     '08-11-2017' : '<span>山の日 <br> Mountain Day</span>',
     '09-18-2017' : '<span>敬老の日 <br> Respect for the Aged Day</span>',
     '09-23-2017' : '<span>秋分の日 <br> Autumnal Equinox Day</span>',
     '10-09-2017' : '<span>体育の日 <br> Health and Sports Day </span>',
     '11-03-2017' : '<span>文化の日 <br> Culture Day</span>',
     '11-23-2017' : '<span>勤労感謝の日 <br> Labour Thanksgiving Day </span>',
     '12-23-2017' : '<span>天皇誕生日 <br> The Emperor\'s Birthday</span>',
 };

6 个答案:

答案 0 :(得分:2)

这不是一个数组。这是一个JS对象。以下是迭代对象属性的方法

for (var day in jpHolidays) {

  if (jpHoldays.hasOwnProperty(day) && day === searchDate) {
     console.log(jpHolidays[day]);  
  } 

}

它解释为 - for迭代器将引导您完成jpHolidays的所有属性。您尝试将每个属性与搜索字符串进行比较。 hasOwnProperty只考虑对象的属性 - 而不是它原型继承的属性。

此外,您可以像jpHolidays一样直接访问jpHolidays[searchDate]

这是一个JS数组a = [1, 2, 3];

这是一个对象a = {one: 1, two: 2, three: 3};

JS没有关联数组。

答案 1 :(得分:1)

A)将其声明为全局变量。

window.jpHolidays = {
     '01-01-2017' : '<span>お正月 <br> New Year\'s Day</span>',
     '01-02-2017' : '<span>お正月 <br> New Year\'s Day observed</span>',
     ...
};

B)在您将使用的文件之前加载data.js文件 因此,全局变量jpHolidays可以存储在窗口中。如下所示:

<script src="data.js"></script>
<script src="yourFile.js"></script>

C)从window.jpHolidays

获取数据
console.log(jpHolidays['01-01-2017']);

答案 2 :(得分:1)

首先,jpHolidays是一个对象,而不是一个数组。

var jpHolidays = {
     '01-01-2017' : '<span>お正月 <br> New Year\'s Day</span>',
     '01-02-2017' : '<span>お正月 <br> New Year\'s Day observed</span>',
     '01-09-2017' : '<span>成人の日 <br> Coming of Age Day</span>',
     '02-11-2017' : '<span>建国記念日 <br> National Foundation Day</span>',
.....
....
}


//assume that this is the holiday you are looking for
var isHoliday = '12-25-2017';

// access the jpHolidaysObject. if found, return the value. If not, print 'not holiday' or whatever suits you.

console.log(jpHolidays[isHoliday] || 'not holiday');

答案 3 :(得分:1)

您可以使用hasOwnProperty方法检查密钥。

var searchDate = '12-25-2017';

if(jpHolidays.hasOwnProperty(searchDate)){
  //write your logic here or return jpHolidays[searchDate];
}

答案 4 :(得分:0)

jpHolidays不是数组而是对象。您可以通过提供密钥来访问该对象中的特定值:

var result = jpHolidays[searchDate]

如果您想检查对象中是否存在特定密钥,请使用&#39; in&#39;操作者:

if (searchDate in jpHolidays) { // ...

答案 5 :(得分:0)

您可以直接访问对象(而不是数组):

var jpHolidays = {
     '01-01-2017' : '<span>お正月 <br> New Year\'s Day</span>',
     '01-02-2017' : '<span>お正月 <br> New Year\'s Day observed</span>',
     '01-09-2017' : '<span>成人の日 <br> Coming of Age Day</span>',
     '02-11-2017' : '<span>建国記念日 <br> National Foundation Day</span>',
     '03-20-2017' : '<span>春分の日 <br> Vernal Equinox Day</span>',
     '04-29-2017' : '<span>昭和の日 <br> Shōwa Day</span>',
     '05-03-2017' : '<span>憲法記念日 <br> Constitution Memorial Day</span>',
     '05-04-2017' : '<span>みどりの日 <br> Greenery Day</span>',
     '05-05-2017' : '<span>こどもの日 <br> Children\'s Day</span>',
     '07-17-2017' : '<span>海の日 <br> Marine Day / Ocean Day</span>',
     '08-11-2017' : '<span>山の日 <br> Mountain Day</span>',
     '09-18-2017' : '<span>敬老の日 <br> Respect for the Aged Day</span>',
     '09-23-2017' : '<span>秋分の日 <br> Autumnal Equinox Day</span>',
     '10-09-2017' : '<span>体育の日 <br> Health and Sports Day </span>',
     '11-03-2017' : '<span>文化の日 <br> Culture Day</span>',
     '11-23-2017' : '<span>勤労感謝の日 <br> Labour Thanksgiving Day </span>',
     '12-23-2017' : '<span>天皇誕生日 <br> The Emperor\'s Birthday</span>',
 };
searchDate = '12-23-2017';
document.write(jpHolidays[searchDate]);