2017-08-17 61 views
1

我在什么地方卡住了,可能是它的最简单的问题,但我曾试着用搜索引擎为尽我所能,并没有找到确切的结果。检查inArray动态

  • 我有一个简单的日历,通过添加HTML,jQuery的
  • 在我woocomerce/WordPress网站,我想展示的基于日历预约开始和结束日期的产品预订数量。当用户将鼠标悬停在日历上的日期喜欢的东西,预订产品的数量将显示下面的日期。 (我正在开发一个出租网站,需要的日期范围从开始到结束,就像酒店,这是可以忽略不计

  • 日历正显示出一种产品细如图像 enter image description here

如果万一说了8月18日,我们有两个产品预订一空,我想显示有“2预订”

对于这一点,我使用inArray功能。

  • 我有日期的阵列(VAR only_dates
  • 我的当前日期(VAR 一些)的开始和结束的范围内]

我试图console.log(jQuery.inArray(some, only_dates))

这是给我的结果 enter image description here 截图,我们有18-Augus牛逼了,所以在第二次,我想太&所以指望它作为2 &则同为8月19。

一个对象,我们可以通过

if(jQuery.inArray(some, only_dates) == 1) 
     { 
     console.log('found') 
     } 

但对我来说尝试,我该如何使用inArray动态地在循环(超过),然后打印次数的数量。

任何帮助,将不胜感激。谢谢。

编辑: 因此,这里是我的代码

$sepr_date = getDatesFromRange($start, $end); /*a function that coverts range dates into sequence*/ 
      foreach ($sepr_date as $dt) {?> 
       <script type="text/javascript"> 
       ds = {'Date': new Date("<?php echo $dt; ?>"), 'Title': 'Booked', 'Link': 'javascript:void(0)'}, 
       events_s.push(ds) 
       var some = "<?php echo $dt; ?>" 
       only_dates.push(some) 
       console.log(some) 
       console.log(only_dates) 
       if(jQuery.inArray(some, only_dates) != -1) 
       { 
        console.log('found ' + some) 
       } 
       </script> 
      <?}?> 

控制台,并提供:

enter image description here

在推动项目,我想检查是否存在。 ,如果找到,增量次数。 如果没有找到,什么都不做那样简单。

回答

1

可以使用grep功能:

var count = $.grep(only_dates, function (elem) { 
    return elem === some; 
}).length; 

https://stackoverflow.com/a/5658562/7604006

+0

为什么这比'$ .inArray'好? – Barmar

+0

因为它计算数组中的出现次数,而inArray没有。 – NikNik

+0

完美工作。 –

0

就像内置的indexOf,$.inArray()返回-1当值没有找到时,所以你必须与此相比。

if (jQuery.inArray(some, only_dates) != -1) { 
    console.log('found'); 
} 
+0

尝试,它总是给我 '发现'。不是所需的结果。 –

+0

'some'和'only_dates'的值是多少? – Barmar

+0

你上面说'only_dates'是一个对象。 '$ .inArray'用于搜索数组,而不是对象。 – Barmar