2017-08-17 42 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