如何获取多个重复属性的唯一ID

时间:2016-07-12 20:16:38

标签: javascript

说我们有一个对象:

   var db = [
        {Id: "201" , Player: "Jon",price: "3.99", loc: "NJ" },
        {Id: "202", Player: "Sam",price: "4.22", loc: "PA" },
        {Id: "203" ,Player: "Sam",price: "4.22", loc: "NY" },
        {Id: "204", Player: "Bill",price: "3.22", loc: "TX" },
        {Id: "205" ,Player: "Dave",price: "3.99", loc: "WA" },
        {Id: "206" ,Player: "Dave",price: "3.99", loc: "WI" },
];

202& 203和205& 206具有类似的播放器和价格值,但我只需要一个id用于相似的值,即输出应为202,205。

有人可以帮助我。

2 个答案:

答案 0 :(得分:1)

您可以使用哈希表对其进行过滤,以查找相同的播放器和价格值。



var db = [{ Id: "201", Player: "Jon", price: "3.99", loc: "NJ" }, { Id: "202", Player: "Sam", price: "4.22", loc: "PA" }, { Id: "203", Player: "Sam", price: "4.22", loc: "NY" }, { Id: "204", Player: "Bill", price: "3.22", loc: "TX" }, { Id: "205", Player: "Dave", price: "3.99", loc: "WA" }, { Id: "206", Player: "Dave", price: "3.99", loc: "WI" }],
    filtered = db.filter(function (a) {
        var key = a.Player + '|' + a.price;
        if (!this[key]) {
            this[key] = true;
            return true;
        }
    }, Object.create(null))

console.log(filtered);




答案 1 :(得分:0)

我认为这可以是一个总结的答案:



var db = [{ Id: "201", Player: "Jon", price: "3.99", loc: "NJ" }, { Id: "202", Player: "Sam", price: "4.22", loc: "PA" }, { Id: "203", Player: "Sam", price: "4.22", loc: "NY" }, { Id: "204", Player: "Bill", price: "3.22", loc: "TX" }, { Id: "205", Player: "Dave", price: "3.99", loc: "WA" }, { Id: "206", Player: "Dave", price: "3.99", loc: "WI" }];

var result = db.filter((v, k) =>
    (k = v.Player + v.price) in this ? false :(this[k] = true));

console.log(result);