Javascript 将所有选项标记设置为";残疾人士;当它们与数组值匹配时(jQuery)

Javascript 将所有选项标记设置为";残疾人士;当它们与数组值匹配时(jQuery),javascript,jquery,arrays,Javascript,Jquery,Arrays,我遇到了一个问题,我必须使用两个for循环(至少这是我的方法)来比较数据和数组。我会尽量简短: 我有一个数组var excludeTimes=[“00:00”、“00:45”、“02:30”、“14:15”]等等。 一个元素和一些元素 <select id="Times"> <option value="--:--">--:--</option> <option value="00:00">00:00</opt

我遇到了一个问题,我必须使用两个for循环(至少这是我的方法)来比较数据和数组。我会尽量简短:

我有一个数组
var excludeTimes=[“00:00”、“00:45”、“02:30”、“14:15”]等等。

一个
元素和一些
元素

<select id="Times">
        <option value="--:--">--:--</option>
        <option value="00:00">00:00</option>
        <option value="00:15">00:15</option>
        <option value="00:30">00:30</option>
        <option value="00:45">00:45</option>
etc.
</select>

我认为你走的路线有点复杂。循环遍历选项,将它们映射到它们的值,然后将它们与数组进行比较,然后假设需要按值重新查找选项,然后禁用它们

最后一步是你缺少的部分,但我宁愿提出一个替代方案,而不是完成这条路线。您已经在对
.map()
进行选项循环-为什么不直接比较该循环中的值呢

以下循环遍历
#Times
中的每个
,并根据
excludeTimes
数组中存在的选项值设置其
disabled
属性

const excludeTimes=[“00:00”、“00:45”、“02:30”、“14:15”];
$(“#Times>option”).attr(“disabled”,函数(){//
return excludeTimes.includes($(this).val());//禁用excludeTimes中的if值
});

--:--
00:00
00:15
00:30
00:45

我认为你走的路线有点复杂。循环遍历选项,将它们映射到它们的值,然后将它们与数组进行比较,然后假设需要按值重新查找选项,然后禁用它们

最后一步是你缺少的部分,但我宁愿提出一个替代方案,而不是完成这条路线。您已经在对
.map()
进行选项循环-为什么不直接比较该循环中的值呢

以下循环遍历
#Times
中的每个
,并根据
excludeTimes
数组中存在的选项值设置其
disabled
属性

const excludeTimes=[“00:00”、“00:45”、“02:30”、“14:15”];
$(“#Times>option”).attr(“disabled”,函数(){//
return excludeTimes.includes($(this).val());//禁用excludeTimes中的if值
});

--:--
00:00
00:15
00:30
00:45

您需要在代码中添加一行,如下所示
$(“#Times option[value=“”+ee[j]+“]”)attr('disabled','disabled')


$(文档).ready(函数(){
notSelectableTimes();
});
函数notSelectableTimes(){
const excludeTimes=[“00:00”、“00:45”、“02:30”、“14:15”]
const e=$(“#Times>option”).map(函数(){return$(this.val()}).get();
常数ee=e.slice(1);
对于(i=0;i

您需要在代码中添加一行,如下所示
$(“#Times option[value=“”+ee[j]+“]”)attr('disabled','disabled')


$(文档).ready(函数(){
notSelectableTimes();
});
函数notSelectableTimes(){
const excludeTimes=[“00:00”、“00:45”、“02:30”、“14:15”]
const e=$(“#Times>option”).map(函数(){return$(this.val()}).get();
常数ee=e.slice(1);
对于(i=0;i
我看不到您在哪里设置禁用的
attr()
I属性?我看不到您在哪里设置禁用的
attr()
I属性?我知道我的代码效率很低,而且很臃肿。但你的是如此干净,简短和容易理解。谢谢!我知道我的代码非常低效和臃肿。但你的是如此干净,简短和容易理解。谢谢!谢谢这也行得通。它适合我自己的代码,这很酷。但我会从上面的Typer中得到答案。@DamirLucic如果上面的问题/疑问能满足您的要求,请您将此标记为答案并竖起大拇指好吗?所以我可以得到分数:)谢谢!这也行得通。它适合我自己的代码,这很酷。但我会从上面的Typer中得到答案。@DamirLucic如果上面的问题/疑问能满足您的要求,请您将此标记为答案并竖起大拇指好吗?所以我可以得到分数:)
function notSelectableTimes() {
  const excludeTimes = ["00:00", "00:45", "02:30", "14:15"] 
  const e = $("#Times>option").map(function() { return $(this).val() }).get();
  const ee = e.slice(1);

    for(i = 0; i < excludeTimes.length; i++) {

      const find = $.inArray( excludeTimes[i], ee);

      for(j = 0; j < ee.length; j++) {

        if( ee[j] === excludeTimes[i]) {
          console.log(`No bookings at ${ee[j]}!`);
          console.log(ee[j]);
          console.log(find);
        }
      }
    }
}

notSelectableTimes();
    <script>
        $(document).ready(function(){
            notSelectableTimes();
        });
        function notSelectableTimes() {
            const excludeTimes = ["00:00", "00:45", "02:30", "14:15"] 
            const e = $("#Times>option").map(function() { return $(this).val() }).get();
            const ee = e.slice(1);

            for(i = 0; i < excludeTimes.length; i++) {
                const find = $.inArray( excludeTimes[i], ee);
                for(j = 0; j < ee.length; j++) {
                    if( ee[j] === excludeTimes[i]) {
                        $('#Times option[value="'+ee[j]+'"]').attr('disabled','disabled');
                        console.log(`No bookings at ${ee[j]}!`);
                        console.log(ee[j]);
                        console.log(find);
                    }
                }
            }
        }
    </script>