LoginSignup
2
4

More than 5 years have passed since last update.

lodash(Underscore.js)を使って複合キーでUniqueする

Last updated at Posted at 2015-09-09

キーが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}

参考

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4