如何用jQuery从遍历的分类列表中提取唯一值?
获取jQuery遍历中的唯一分类文本
没问题,这需求很常见,我来帮你调整代码实现去重!核心思路就是先收集所有分类文本,再过滤掉重复项,下面给你两种实用的实现方式:
方法一:用ES6 Set自动去重(推荐,简洁高效)
Set是ES6新增的数据结构,它会自动忽略重复的元素,非常适合做去重操作:
jQuery(document).ready(function() { // 创建Set存储唯一分类,自动去重 const uniqueCategories = new Set(); jQuery(".rpc-post-category a").each(function() { // 先去掉文本前后空格,避免因空格误判为不同分类 const categoryText = jQuery(this).text().trim(); // 跳过空文本 if (categoryText) { uniqueCategories.add(categoryText); } }); // 把Set转成数组,方便后续遍历/渲染 const uniqueCategoryList = Array.from(uniqueCategories); // 输出到控制台查看结果 console.log("唯一分类列表:", uniqueCategoryList); // 如果你要把这些分类渲染到页面,比如插入到某个容器 const $categoryContainer = jQuery("<div class='unique-categories'></div>"); uniqueCategoryList.forEach(category => { $categoryContainer.append(`<span class='category-item'>${category}</span>`); }); // 替换成你实际要插入的元素选择器,比如#category-list jQuery("body").append($categoryContainer); });
方法二:用数组手动判断去重(兼容更老环境)
如果你的项目需要兼容不支持ES6的老浏览器,可以用数组结合indexOf来手动判断是否已存在:
jQuery(document).ready(function() { const uniqueCategories = []; jQuery(".rpc-post-category a").each(function() { const categoryText = jQuery(this).text().trim(); // 只有文本非空且未在数组中存在时,才添加 if (categoryText && uniqueCategories.indexOf(categoryText) === -1) { uniqueCategories.push(categoryText); } }); console.log("唯一分类列表:", uniqueCategories); // 页面渲染逻辑和方法一一致,这里就不重复写了 });
关键注意点
- 一定要用
trim()处理文本:很多时候分类文本前后会有空格,看起来一样但实际是不同的字符串,trim能避免这种误判。 - 过滤空文本:防止遍历到没有内容的a标签,导致列表出现空项。
内容的提问来源于stack exchange,提问作者Nikhil Awasarikar
相关产品推荐
相关产品推荐

