こんにちは
(gentaroさんからのご指摘どおり、はじめに書いた回答(※追記2参照)は、質問を誤読しておりまして、質問者様の混乱を避けるため消去しました。申し訳ありません )
この回答では、与えられるデータは、以下のように、ご質問にあるようなプロパティを持つオブジェクトの配列であることを前提にしました。(この前提では、ご質問の要件は満たせない場合は、コメント頂ければと思います。)
javascript
1const data = [
2 {
3 ID: 1,
4 KEY1: 'ABC',
5 KEY2: 20,
6 KEY3: '大阪'
7 },
8 {
9 ID: 2,
10 KEY1: 'ABC',
11 KEY2: 20,
12 KEY3: '東京'
13 },
14 {
15 ID: 3,
16 KEY1: 'ABC',
17 KEY2: 20,
18 KEY3: '大阪'
19 }
20];
上記を前提として、_.groupBy を使って以下のようにすると、ID以外のプロパティが等しいオブジェクトを要素とする配列にして、グループ化することができます。
javascript
1const groupedData = _.groupBy(data, e => `${e.KEY1}/${e.KEY2}/${e.KEY3}`);
上記で作られるオブジェクト groupedData
のプロパティは、以下のようなKEY1, KEY2, KEY3 の値を/
で区切った文字列です。
重複した要素を取得するには、groupedData
の値である配列のうち、長さが 1 より大きいものを選び出せばよいので、以下のようにします。
javascript
1const duplicatedData = Object.values(groupedData).filter(ary => ary.length > 1);
以上、参考になれば幸いです。
追記1
参考までに、冒頭に書いた形式の配列 data
に 100個の要素を生成して、上記に記載した_.groupByを使ったコードによって、重複している要素を一覧するコードを以下に作成しました。
追記2
すでに消去した、はじめに書いた回答では、ID以外のプロパティが同じオブジェクトの重複を除去するコードを、stackoverflow の この回答 を参考に、回答していました。