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

JavaScript实现按Tag_No和PlatformID对数组对象去重

基于两个字段组合的数组对象去重(模拟SQL GROUP BY Tag_No + PlatformID)

需要实现对数组中对象按Tag_No与PlatformID的组合去重:只有当两个字段同时相同时才视为重复,保留每个组合的第一个出现项,效果等价于SQL里的GROUP BY Tag_No, PlatformID。

你现有代码仅通过单个Tag_No字段判断去重,会错误过滤掉同Tag_No但不同PlatformID的有效项——比如xxx05搭配PlatformID:5和PlatformID:12本应都被保留,但原代码只会留下第一个xxx05的条目。

修正方案1:修改原有循环逻辑

把缓存的判断键改成两个字段的组合字符串,同时修正空数组判断的错误:

var NewTag = [
    {Tag_No:'xxx01',PlatformID:'12',Details:'example1'},
    {Tag_No:'xxx02',PlatformID:'13',Details:'example2'},
    {Tag_No:'xxx03',PlatformID:'14',Details:'example3'},
    {Tag_No:'xxx05',PlatformID:'5',Details:'example4'},
    {Tag_No:'xxx05',PlatformID:'12',Details:'example5'},
    {Tag_No:'xxx05',PlatformID:'12',Details:'example6'},
];
var tmp = {};
var result = [];

// 修正原代码的空数组判断:数组是引用类型,不能直接和[]比较
if (NewTag && NewTag.length > 0) {
    for (var i = 0; i < NewTag.length; i++) {
        var val = NewTag[i];
        // 生成唯一组合键
        var uniqueKey = `${val.Tag_No}_${val.PlatformID}`;
        if (!tmp[uniqueKey]) {
            tmp[uniqueKey] = true;
            result.push(val);
        }
    }
}
console.log('result', result);

修正方案2:ES6简洁实现(推荐)

利用Set存储已出现的组合键,结合filter方法快速过滤:

const NewTag = [
    {Tag_No:'xxx01',PlatformID:'12',Details:'example1'},
    {Tag_No:'xxx02',PlatformID:'13',Details:'example2'},
    {Tag_No:'xxx03',PlatformID:'14',Details:'example3'},
    {Tag_No:'xxx05',PlatformID:'5',Details:'example4'},
    {Tag_No:'xxx05',PlatformID:'12',Details:'example5'},
    {Tag_No:'xxx05',PlatformID:'12',Details:'example6'},
];

const seenKeys = new Set();
const result = NewTag.filter(item => {
    const key = `${item.Tag_No}_${item.PlatformID}`;
    if (!seenKeys.has(key)) {
        seenKeys.add(key);
        return true;
    }
    return false;
});

console.log('result', result);

两种方案最终都会输出你期望的结果:

result=[{Tag_No:'xxx01',PlatformID:'12',Details:'example1'},
    {Tag_No:'xxx02',PlatformID:'13',Details:'example2'},
    {Tag_No:'xxx03',PlatformID:'14',Details:'example3'},
    {Tag_No:'xxx05',PlatformID:'5',Details:'example4'},
    {Tag_No:'xxx05',PlatformID:'12',Details:'example5'},
   ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:10:36