JS循环遍历并删除指定元素

这篇具有很好参考价值的文章主要介绍了JS循环遍历并删除指定元素。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

昨天一个朋友让我帮她修改的一段代码:

JS循环遍历并删除指定元素

需求要每条数据轮播1分钟,然后删除,运行的时候会发现foreach循环中,删除一个之后,其他的就无法删除了。

【分析原因】

数据格式例如:['a','b','b','c'],需求是删除item为‘b’的元素

第一次循环:SysNotices数据:['a','b','b','c'],index为0,item:'a',不符合需求,

第二次循环:SysNotices数据:['a','b','b','c'],index为1,item:'b',执行splice(index,1),

第三次循环:SysNotices数据:['a','b','c'],index为2,item:'c',不符合需求,

到此数据中还有一个'b'删除不掉

使用splice删除数组元素会改变原始数组,这样会打乱foreach的index指向数组的下标

解决方法:

for

    for(var i=0,sign=true,len=that.data.SysNotices.length;i<len;sign ? i++ : i){
      if(that.data.SysNotices[i] && that.data.SysNotices[i].kind == 1){
        sign = false;
        setTimeout(() => {
          that.data.SysNotices.splice(i,1)
          that.setData({
            SysNotices: that.data.SysNotices,
            currentSwiper:0
          })
        }, 60000)
      }else{
        sign = true;
      }
    }

使用 sign 标记是否执行删除操作,删除元素则 i 保持不变,不执行删除时 i++ ,保证下一次循环时的指向的数组元素正确。

暂时写到此处,如有其他更好的方法再更新。文章来源地址https://www.toymoban.com/news/detail-485511.html

到了这里,关于JS循环遍历并删除指定元素的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java】遍历 Map 时删除 Map 中元素

    https://blog.csdn.net/LSKCGH/article/details/97521668 https://www.jianshu.com/p/a3b3aae6697c 不能直接在 Map 的 for 循环中使用 remove 方法,会抛出 ConcurrentModificationException 异常,应使用迭代器中的 remove 方法删除元素。 以下代码运行时会抛出 ConcurrentModificationException: 解决方案如下: 示例1: 示例

    2024年02月16日
    浏览(26)
  • Java List循环安全删除元素

    Java List循环安全删除元素的几种方式如下: 使用迭代器(Iterator):通过调用List的iterator()方法获取List的迭代器,然后使用迭代器的remove()方法删除元素。这种方式可以避免在遍历过程中修改List导致的并发修改异常(ConcurrentModificationException)。 示例代码: 使用Java 8的Stream

    2024年02月11日
    浏览(31)
  • 8 种循环删除 List 元素的方法:

    public ListString list = Arrays.asList(\\\"张三\\\", \\\"李四\\\", \\\"王五\\\", \\\"老六\\\", \\\"李东\\\", \\\"李想\\\", \\\"苟八\\\"); 普通 for 循环删除(不可靠) 普通 for 循环提取变量删除(抛异常) 普通 for 循环倒序删除(可靠) public void remove() {     ListString list = new ArrayList(initList);     for (int i = li

    2024年01月20日
    浏览(31)
  • List集合删除指定元素-四种方法

    第一种 for循环 输出结果为 第二种 迭代器 输出结果为 第三种 stream流 这种过滤是留下符合条件的元素 输出结果为 第四种 removeIf 方法以及 方法引用 removeIf 方法是jdk1.8 Collection以及其子类新增的,作用是过滤指定条件的元素 输出结果为 总结 不言而喻,第四种方法最好用。

    2024年02月09日
    浏览(43)
  • 删除数组中的指定元素或数组对象

    1.删除数组中的某个指定元素 1)首先获取元素下标,用indexOf()函数找到他的位置index,如果没有找到这个元素那么index将会等于-1;如下为找到元素2的下标 var array = [1,2,3]; var index = array.indexOf(2); 2)使用splice进行移除,删除第index位置的指定个数的元素,splice直接修改原数组,并

    2024年02月11日
    浏览(46)
  • Java中ArrayList如何删除指定位置的元素

    目标:list中有0到39共40个元素,删除其中索引是10、20、30的元素 首先当我们删除第10位元素时,List会将后面的元素向前补位,之后再查第10位元素就会输出第11位元素 那么删除了一个元素以后,后面需要删除的元素位置就向前提1位 当然我们可以用一个数组或列表从小到大存

    2023年04月08日
    浏览(64)
  • C语言 - 删除数组中的指定元素(Delete)

    目录   引言: 题目说明: 举例分析: 初始状态: step 1:  Step 2:  Step 3 :  Step 4 :  将最后一个元素赋值为0  Step 5 :将i下标向前迁移一位(重复判断): 代码实现:  总结:   这是数组中一个比较简单的题目,今天把它单独拎出来的原因就是在我即将要写的数据结构的顺

    2023年04月09日
    浏览(38)
  • 数据结构:图文详解顺序表的各种操作(新增元素,查找元素,删除元素,给指定位置元素赋值)

      目录 一.顺序表的概念 二.顺序表的实现 新增元素 默认尾部新增 指定位置添加元素 查找元素 查找是否存在 查找元素对应的位置 查找指定位置对应的元素 删除元素 获取顺序表长度 清空顺序表 在线性数据结构中,我们一般分为俩类:顺序表和链表         顺序表是一

    2024年02月05日
    浏览(50)
  • python 一次性删除列表(list)的空白元素(空内容) 或者 一次性删除列表(list)中的指定元素

    看看下述代码: 输出: 当你遇见这种情况,有哪些方法来去除里面的空内容呢(即 \\\'\\\' )? 1.1 删除空内容(方法一) : 输出: 1.2 删除空内容(方法二) : 需要 配合 lambda 表达式 一起使用! 输出: 2.3 删除指定内容 : 输出: 注 :此方法既可以删除空元素,也可以删除指

    2024年02月03日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包