配列から一意のオブジェクトを取得する
11007 ワード
識別子として使用できる共通のプロパティが少なくとも 1 つあるオブジェクトの配列があるとします.
この関数を使用すると、選択したプロパティに基づいて一意のオブジェクトを持つ新しい配列を作成できます.
例:
配列があるとしましょう:
プロパティ
結果は次のようになります.
ここに typescript バージョンを追加します.
この関数を使用すると、選択したプロパティに基づいて一意のオブジェクトを持つ新しい配列を作成できます.
function getUniqueElementsFromArray(array, uniqueProperty) {
const result = [];
// The map will help us keep a record of the objects
const map = new Map();
array.forEach((item, i) => {
if (!map.has(item[uniqueProperty])) {
// New element, push it into results
map.set(item[uniqueProperty], true); // you can set any value, we just need it to be in the Map
// save unique object
result.push(item);
}
});
return result;
};
例:
配列があるとしましょう:
const sample = [
{name: 'a', points: 20, game: 1},
{name: 'e', points: 5, game: 3},
{name: 'a', points: 15, game: 3},
{name: 'i', points: 5, game: 3},
{name: 'e', points: 50, game: 1},
{name: 'a', points: 0, game: 5},
{name: 'o', points: 100, game: 2},
{name: 'e', points: 20, game: 2},
{name: 'u', points: 20, game: 1},
{name: 'i', points: 50, game: 2},
]
プロパティ
'name'
を識別子として使用できますconsole.log(getUniqueElementsFromArray(sample, 'name'))
結果は次のようになります.
[
{ name: 'a', points: 20, game: 1 },
{ name: 'e', points: 5, game: 3 },
{ name: 'i', points: 5, game: 3 },
{ name: 'o', points: 100, game: 2 },
{ name: 'u', points: 20, game: 1 }
]
ここに typescript バージョンを追加します.
export const getUniqueItems = (array: any[], uniqueProperty: string): any => {
const result: any[] = []
const map = new Map()
array.forEach((item) => {
if (!map.has(item[uniqueProperty])) {
map.set(item[uniqueProperty], true)
result.push(item)
}
})
return result
}
Reference
この問題について(配列から一意のオブジェクトを取得する), 我々は、より多くの情報をここで見つけました https://dev.to/tepexic/get-unique-objects-from-an-array-4cogテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol