これは私のデータです:
[
{
url: 'www.example.com/hello',
id: "22"
},
{
url: 'www.example.com/hello',
id: "22"
},
{
url: 'www.example.com/hello-how-are-you',
id: "23"
},
{
url: 'www.example.com/i-like-cats',
id: "24"
},
{
url: 'www.example.com/i-like-pie',
id: "25"
}
]
Lodashで、重複したidキーを持つオブジェクトを削除するにはどうすればいいですか?フィルター、地図、そしてユニークなものがあるが、よくわからない。
私の実際のデータセットははるかに大きく、より多くのキーを持っていますが、概念は同じであるべきです。
lodash 4.0.0には この重大な変更点 があるため、_.uniq
は現在のバージョンでは機能しません。だからどちらかを使う
_.uniqBy(data, function (e) {
return e.id;
});
または
_.uniqBy(data, 'id');
ドキュメント: https://lodash.com/docs#uniqBy
Lodashの古いバージョン(<4.0.0)用
データはid
によって一意であり、データはdata
変数に格納されていると仮定すると、 uniq() 関数を次のように使用できます。
_.uniq(data, function (e) {
return e.id;
});
あるいは単に
_.uniq(data, 'id');
あなたはlodashメソッド_.uniqWithを使うことができます、それはlodash 4.17.2の現在のバージョンで利用可能です。
例:
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
_.uniqWith(objects, _.isEqual);
// => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
より多くの情報: https://lodash.com/docs/#uniqWith
単に _.uniqBy() を使用してください。それは配列の重複のないバージョンを作成します。
これは新しい方法で、4.0.0バージョンから利用可能です。
_.uniqBy(data, 'id');
または
_.uniqBy(data, obj => obj.id);
次のように、 unionBy を4.0.0以降に使用することもできます。let uniques = _.unionBy(data、 'id')
単純な配列の場合は、単純に union を使用します。