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

Posted

技术标签:

【中文标题】如何在循环中拆分和验证字符串是不是存在【英文标题】:How to split and verify if a string exists while in a loop如何在循环中拆分和验证字符串是否存在 【发布时间】:2021-07-09 11:05:02 【问题描述】:

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

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 循环中脚本标记的代码是我尝试将这些数字分开并将其记录到控制台,这是输出:

【问题讨论】:

为什么要在循环中定义函数? 欢迎来到 Stack Overflow!访问help center,使用tour 了解内容和How to Ask。如果您遇到困难,请发布您尝试的minimal reproducible example,使用[&lt;&gt;] sn-p 编辑器记录输入和预期输出。如果问题与模板或服务器处理无关,请发布 PURE html 和 JS @mplungjan 感谢您的建议,这些页面很棒。我正在使用名为 EJS 的模板引擎,因此包含了 HTML 和 JS,对于这个问题,我没有看到显示我的 server.js 代码有什么帮助,所以我们可以专注于逻辑。我在循环中有这个函数,因为这是我设法处理来自我的数据库并在所需元素中一一打印的变量(Customer.numbers)的方式,我应该尝试不同的方法吗? 正如我所说,这不是服务器问题。您遇到问题的代码是纯客户端代码,因此我们希望查看包含脚本的视图源示例。如果您有多个客户,您会看到循环中包含无用的函数会一遍又一遍地添加function splitting(number) if (/\,/.test(number)) number = number.split(','); return number; 。这是浪费带宽,因为只使用最后一个 我很感激,但你能更详细地解释一下为什么这个函数应该在循环之外吗?这是我的客户数据库,我有几个,只有一个项目的字符串值大于一个数字:imgur.com/LkirIqE 我会尝试准备一个沙箱以便更好地理解,因为我有直接来自 mongoDB 的信息我会尝试用一个示例数组来表示它。 【参考方案1】:

使用客户数组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))

【讨论】:

您需要遍历它们并为每个创建一个跨度并将其插入到 dom 中

以上是关于如何在循环中拆分和验证字符串是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Eclipse 中拆分字符串并将项目添加到 ListView(用于循环/迭代)? [关闭]

java 中怎样拆分一个整数 并赋值给一个数组

检查拆分字符串的值是不是在下面的字符串中

java如何把一个字符串拆分后用foreach分行打出并用stringbuilder重组?

如何检查类名中是不是存在单词?

Laravel 验证 - 如何检查给定数组中是不是存在值?