我有一组具有以下结构的对象:
[{type:' A',rank:10}, {type:' B',排名:10}, {type:' A',排名:16}, {type:' B',rank:16}]
我希望每个object.type保留一个对象,即object.rank最大的那个对象,所以我在这种情况下的预期输出是:
[{type:' A',rank:16}, {type:' B',rank:16}]
我的代码是:
conditions = conditions.filter((cond,index,self)=> self.findIndex((t)=> {return t.type === cond.type&& t.rank< cond .rank;})=== index);
此代码删除所有对象。当我不使用
时t.rank< cond.rank
然后它起作用,但不能保证它会给予最大的排名。
提前感谢您,我当然不会坚持使用ES6解决方案。
答案 0 :(得分:2)
您可以结合使用Array.reduce和Array.findIndex来获得所需的结果。
base 8 Decimal
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
10 8
11 9 -> Here
12 10
13 11
答案 1 :(得分:1)
我使用简单的javascript函数编写了自己的解决方案。
var conditions = [{ type: 'A', rank: 10 }, { type: 'B', rank: 10 }, { type: 'A', rank: 16 }, { type: 'B', rank: 16 }];
function check(type, rank) {
for (var j = 0; j < conditions.length; j++) {
if (conditions[j].type == type) {
if (conditions[j].rank > rank) {
return 1;
}
}
}
return 0;
}
for (var i = 0; i < conditions.length; i++) {
if (check(conditions[i].type, conditions[i].rank)) {
conditions.splice(i, 1);
i = i - 1;
}
}
console.log(conditions);