如何从多维数组中去除重复条目?按linked_article_id保留唯一值
多维数组按
linked_article_id去重解决方案 嘿,我来帮你搞定这个数组去重的问题!针对多维数组里linked_article_id重复的条目,你可以试试下面这两种实用方法,应该能解决你的困扰:
方法一:用对象记录已出现的ID(保留第一个重复条目)
这种方法逻辑直观,适合快速理解,会保留数组中第一个出现的linked_article_id条目,后续重复的直接跳过:
// 替换成你自己的多维数组 const originalArray = [ { id: 1, linked_article_id: 3, title: "文章1" }, { id: 2, linked_article_id: 5, title: "文章2" }, { id: 3, linked_article_id: 3, title: "文章3" }, { id: 4, linked_article_id: 7, title: "文章4" } ]; const seenIds = {}; // 用来记录已经出现过的linked_article_id const uniqueArray = []; // 遍历原数组,筛选唯一条目 for (const item of originalArray) { // 如果当前ID没被记录过,就加入结果数组并标记 if (!seenIds[item.linked_article_id]) { seenIds[item.linked_article_id] = true; uniqueArray.push(item); } } console.log(uniqueArray); // 输出结果会保留linked_article_id=3的第一个条目,其他唯一值也全部保留
方法二:利用Map的键唯一性(灵活选择保留第一个或最后一个)
Map是ES6新增的数据结构,键的唯一性刚好适配去重需求。如果想保留最后一个出现的重复条目,可以用一行简洁代码实现:
const originalArray = [/* 你的数组内容 */]; const uniqueArray = Array.from( new Map(originalArray.map(item => [item.linked_article_id, item])).values() );
如果还是想保留第一个出现的条目,稍微调整逻辑即可:
const originalArray = [/* 你的数组内容 */]; const idMap = new Map(); for (const item of originalArray) { // 只有当Map里没有这个ID时才添加 if (!idMap.has(item.linked_article_id)) { idMap.set(item.linked_article_id, item); } } const uniqueArray = Array.from(idMap.values());
如果之前你尝试的函数没生效,大概率是因为没有精准针对linked_article_id做唯一键判断,或者去重逻辑里的条件没写对。上面这两种方法都是直接以linked_article_id为核心判断依据,应该能解决你的问题。
内容的提问来源于stack exchange,提问作者Dev Troubleshooter
相关产品推荐
相关产品推荐

