说我们有一个对象:
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。
您可以使用reduce()
first返回带有每个Player|price
组合计数的对象。然后你可以使用另一种减少,并检查是否计数Player|price
如果数量> 1
。如果是,则将对象id添加到数组。
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 obj = db.reduce(function(o, e) {
o[e.Player + '|' + e.price] = (o[e.Player + '|' + e.price] || 0) + 1;
return o;
}, {});
var result = db.reduce(function(r, e) {
if(obj[e.Player + '|' + e.price] > 1) r.push(e.Id);
return r;
}, []);
console.log(result)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句