无论ID如何,我都需要知道重复的数据。
这是数组:-
const myArray = [
{id: "sjdh1", userName: "user 1" , Message: ["try","test","test"]},
{id: "sjdh2", userName: "user 2" , Message: ["test","try","test"]},
{id: "sjdh3", userName: "user 3" , Message: ["test"]},
{id: "sjdh4", userName: "user 1" , Message: ["dummy"]},
{id: "sjdh5", userName: "user 1" , Message: ["try","test","test"]},
]
我想删除重复的数据。id
没关系
预期的结果是:-
const myArray = [
{id: "sjdh1", userName: "user 1" , Message: ["try","test","test"]},
{id: "sjdh2", userName: "user 2" , Message: ["test","try","test"]},
{id: "sjdh3", userName: "user 3" , Message: ["test"]},
{id: "sjdh4", userName: "user 1" , Message: ["dummy"]},
]
如果UserName和Message数组完全相同,则删除值如果Message数组不同,则删除该值,则不应将该对象视为重复的对象:
因此,我尝试使用set方法,但是我发现它不起作用,因为myArray包含该对象。
然后我用谷歌搜索了问题并得到了解决方案,但是它对我没有用:-
const uniqueValues = new Set(array.map(v => v.name));
它给了我唯一的价值
现在就足够了:
const myArray = [
{id: "sjdh1", userName: "user 1" , Message: ["try","test","test"]},
{id: "sjdh2", userName: "user 2" , Message: ["test","try","test"]},
{id: "sjdh3", userName: "user 3" , Message: ["test"]},
{id: "sjdh4", userName: "user 1" , Message: ["dummy"]},
{id: "sjdh5", userName: "user 1" , Message: ["try","test","test"]},
]
function unique(){
const uniqueKeys = ['userName','Message'];
const keys = ['id'];
const uniqueObj = {}
myArray.forEach((arrObj)=>{
const strKey = {};
const strObj = {};
uniqueKeys.forEach((k)=>{
strKey[k] = arrObj[k]
});
keys.forEach((key)=>{
strObj[key] = arrObj[key];
})
if(!uniqueObj[JSON.stringify(strKey)])
uniqueObj[JSON.stringify(strKey)] = strObj;
});
const output = Object.keys(uniqueObj).map((key)=>{
return {
...uniqueObj[key],
...JSON.parse(key)
}
})
console.log(output);
}
unique();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句