如何在循环中拆分和验证字符串是否存在

How to split and verify if a string exists while in a loop

我不知道在哪里可以解决这个问题。我必须合并数字,以便只有在黄色不存在时才会出现绿色。但是我无法正确显示黄色,因为我可以在我的数据库中收到多个数字,并且它们在一个字符串中。

在 scriptlet 标签(绿色标签)内创建了一个循环。

      <div class="lista">
        <ul>
          <% for (var i=0; i <=10; i++ ) { %>
                <% var num=i %>
                <li>
                  <span id="<%= num %>" class="btn btn-success btn_reservas">
                    <%= num %>
                  </span>
                </li>
                <% } %>
        </ul>
      </div>

而不是像上面那样的循环,现在信息来自 mongoDB 并在 span 内打印每个信息,带有 id 和带有数字字符串的文本。

      <div class="lista">
        <ul>
          <% customers.forEach(function (Customer) { %>
            <script>
              var myNumber = "<%= Customer.numbers %>"
              function splitting(number) {
                if (/\,/.test(number)) { number = number.split(','); } return number;
              }
              console.log(splitting(myNumber));
            </script>
            <li>
              <span id="<%= Customer.numbers %>" class="btn btn-warning btn_pagos">
                <%= Customer.numbers %>
              </span>
            </li>
            <% }) %>
        </ul>
      </div>

forEach 循环中脚本标签中的代码是我尝试将这些数字分开并将其记录到控制台中,这是输出:

使用客户数组 some() 过滤绿色数字数组并检查客户数字字符串 includes() 绿色数字

const nums = Array.from({length:11}, (_,i) => `${i}`.padStart(3,'0'));

const customers = [{number:'002'},{number:'6003'}, {number:'1010'}, {number:'8008888'}];

const unique_nums = nums.filter(s => !customers.some(o => o.number.includes(s)));

console.log('Before filter:', JSON.stringify(nums))
console.log('After filter:', JSON.stringify(unique_nums))