动态检查inArray

时间:2017-08-17 07:41:59

标签: javascript jquery calendar

我已经卡在某个地方,可能是最简单的问题,但我尽可能多地尝试谷歌搜索,但没有找到确切的结果。

  • 我有一个简单的日历,由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 截图,我们已经有了8月18日,所以在第二次,我想把它算作2&然后同样在19 - 8月和&等等。

对于我们可以尝试的一个对象

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

在推动物品时,我想检查存在。 如果找到,增加计数。 如果没有找到,那就什么都不做。

2 个答案:

答案 0 :(得分:1)

您可以使用grep功能:

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

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

答案 1 :(得分:0)

就像内置的indexOf一样,$.inArray()在未找到值时返回-1,因此您必须与之进行比较。

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