You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery如何移除重复data-id元素并保留最后出现的实例?

保留每个data-id对应的最后出现元素的解决方案

需求说明

需要过滤带有data-id属性的元素,仅保留每个data-id对应的最后出现的实例。示例HTML如下:

<div data-id="001">Hello</div>
<div data-id="001">World</div>
<div data-id="002">Keep</div>
<div data-id="002">Only</div>
<div data-id="002">Unique</div>
<div data-id="003">Last</div>
<div data-id="003">Word</div>
<div data-id="004">Please</div>

期望最终保留的元素内容为:World Unique Word Please

现有代码(保留第一个实例)

以下jQuery代码可实现保留每个data-id的第一个出现实例,但不符合需求:

var found = {};
$('[data-id]').each(function(){
    var $this = $(this);
    if(found[$this.data('id')]){
         $this.remove();   
    }
    else{
         found[$this.data('id')] = true;   
    }
});

解决方案(保留最后一个实例)

要保留最后出现的实例,可通过反向遍历元素,标记已处理的data-id并移除靠前的重复项:

var found = {};
// 反向遍历所有带data-id的元素
$('[data-id]').get().reverse().forEach(function(el) {
    var $el = $(el);
    var id = $el.data('id');
    if (found[id]) {
        $el.remove();
    } else {
        found[id] = true;
    }
});

思路说明

  1. 用.get()将jQuery对象转为DOM数组,再通过.reverse()反转遍历顺序,从最后一个元素开始处理
  2. 遍历中记录已处理的data-id,若当前元素的ID已存在,则移除该元素(对应原顺序中靠前的重复项)
  3. 未记录过的ID标记为已处理,保留该元素(即原顺序中的最后一个实例)

内容的提问来源于stack exchange,提问作者purple11111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:30:50