キーが1つの場合
例: idキーでユニークにする
-> uniqメソッドにキーの文字列を渡す
var objA = {
id: 1,
foreignKey: 1,
name: 'objA',
sort_order: 1
};
var objB = {
id: 2,
foreignKey: 1,
name: 'objB',
sort_order: 2
};
var objC = {
id: 1, // idがobjAと重複!
foreignKey: 1,
name: 'objB',
sort_order: 3
};
var result = _.uniq([objA, objB, objC], 'id');
// result
// [Object, Object]
// result[0]
// Object {id: 1, foreignKey: 1, name: "objA", sort_order: 1}
// result[1]
// Object {id: 2, foreignKey: 1, name: "objB", sort_order: 2}
複合キーの場合
例: foreignKeyとnameの複合キーでユニークにする
-> 比較するキーのオブジェクトを作成 -> JSON.stringifyして比較
var objA = {
foreignKey: 1,
name: 'objA',
sort_order: 1
};
var objB = {
foreignKey: 1,
name: 'objB',
sort_order: 2
};
var objC = {
foreignKey: 1, // foreignKeyがobjAと重複!
name: 'objA', // nameがobjAと重複!
sort_order: 3
};
var result = _.uniq([objA, objB, objC], (obj) => {
return JSON.stringify({
foreignKey: obj.foreignKey,
name: obj.name
});
});
// result
// [Object, Object]
// result[0]
// Object {foreignKey: 1, name: "objA", sort_order: 1}
// result[1]
// Object {foreignKey: 1, name: "objB", sort_order: 2}