如何获取数组中的重复元素

鲁帕姆

我在 ReactJs 中编写代码我有一个像这样的对象数组

[
{
        createdBy: "DEF",
        createdDate: "2020",
        lastModifiedDate: "2021",
        name: "John Doe",
        section: {
            createdBy: "A2C",
            status: "ACTIVE",
        },
        sectionName: "Mechanical",
    },

{
        createdBy: "ABC",
        createdDate: "2020",
        lastModifiedDate: "2021",
        name: "John Doe",
        section: {
            createdBy: "ABC",
            status: "ACTIVE",
        },
        sectionName: "Mechanical",
    },

    {
        createdBy: "ABC",
        createdDate: "2020",
        lastModifiedDate: "2021",
        name: "John Doe",
        section: {
            createdBy: "XYZ",
            status: "ACTIVE",
        },
        sectionName: "Mechanical",
    },

    {
        createdBy: "A1C",
        createdDate: "2020",
        lastModifiedDate: "2021",
        name: "John Wick",
        section: {
            createdBy: "ABC",
            status: "ACTIVE",
        },
        sectionName: "Mechanical",
    },
];

在这里,唯一相同的是“名称”,因此基于名称,我希望将重复的对象存储在新数组中。

我试过这样

let temp = [];
for (const i of response) {
    if (!temp.includes(i)) {
        temp.push(i);
        console.log("if loop", i);
    } else {
        console.log("else loop", response);
    }
}

但控制永远不会转到其他,因为它认为每个对象都是不同的。

我需要一个对象的第一次出现,但是当“名称”元素被重复时,该对象应该存储在一个新数组中。

预期的:-

[
    {
        createdBy: "ABC",
        createdDate: "2020",
        lastModifiedDate: "2021",
        name: "John Doe",
        section: {
            createdBy: "ABC",
            status: "ACTIVE",
        },
        sectionName: "Mechanical",
    },
    {
        createdBy: "ABC",
        createdDate: "2020",
        lastModifiedDate: "2021",
        name: "John Doe",
        section: {
            createdBy: "XYZ",
            status: "ACTIVE",
        },
        sectionName: "Mechanical",
    },


]
萨吉布·艾哈迈德

你可以维护一个tracker对象来检查同名的对象是否已经被访问过。如果访问,则将对象duplicate推入unique数组,否则推入数组。尝试这个-

const data=[{createdBy:"ABC",createdDate:"2020",lastModifiedDate:"2021",name:"John Doe",section:{createdBy:"ABC",status:"ACTIVE"},sectionName:"Mechanical"},{createdBy:"ABC",createdDate:"2020",lastModifiedDate:"2021",name:"John Doe",section:{createdBy:"A2C",status:"ACTIVE"},sectionName:"Mechanical"},{createdBy:"A1C",createdDate:"2020",lastModifiedDate:"2021",name:"John Doe",section:{createdBy:"ABC",status:"ACTIVE"},sectionName:"Mechanical"}];

const track = {};
const unique = [];
const duplicate = [];

for (const item of data) {
    if (track?.[item.name] === undefined) {
        unique.push(item);
        track[item.name] = true;
    } else {
        duplicate.push(item);
    }
}

console.log('unique', unique);
console.log('duplicate', duplicate);
.as-console-wrapper {min-height: 100%!important; top: 0}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章