2017-11-30 8 views
0

に配列は、どのように私は、ハッシュテーブル

const users = dedup([ 
{ id: 1, email: '[email protected]' }, 
{ id: 2, email: '[email protected]' }, 
{ id: 1, email: '[email protected]' }, 
]); 
/* would ideally like it to return 
Object { 
email: "[email protected]", 
email: "[email protected]", 
id:1 
}, Object { 
email: "[email protected]", 
id:2 
} */ 

ハッシュテーブルのみ正確な重複をフィルタリングして類似したIDを参加しません

function dedup(arr) { 
var hashTable = {}; 

return arr.filter(function (el) { 
    var key = JSON.stringify(el); 
    var match = Boolean(hashTable[key]); 
    return (match ? false : hashTable[key] = true); 
}); 
} 

マイ戻り文を使用して、次の配列を重複排除ん別の電子メールアドレス

console.log(users); 
/* currently returns 
Object { 
email: "[email protected]", 
id:1 
}, Object { 
email: "[email protected]", 
id:2 
}, 
{ id: 1, email: '[email protected]' }, 
]); */ 

答えて

1
function dedup(arr) { 
    var hashTable = {}; 

    arr.forEach(function(el) { 
    if (!hashTable.hasOwnProperty(el.id)) { 
     hashTable[el.id] = []; 
    } 
    hashTable[el.id].push(el.email); 
    }); 

    return hashTable; 
} 

結果は:

{ 
    1: ['[email protected]', '[email protected]' ], 
    2: ['[email protected]'] 
} 

希望する必要があります。