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]
コメントを追加