我有一个像这样的数组。
var vg = [
{ id: "99", seq: "8" },
{ id: "99", seq: "2" },
{ id: "98", seq: "8" },
{ id: "98", seq: "3" },
{ id: "97", seq: "8" },
{ id: "97", seq: "7" }
]
所以现在我想获得具有最高序列值的唯一id
。这是我尝试过的:
if (vg && vg.length > 0) {
vg = vg.sort(function ( a, b ) {
return b.sequence - a.sequence;
});
arr.push(vg[0]);
}
这是我的预期结果:
[
{ id: "99", seq: "8" },
{ id: "98", seq: "8" },
{ id: "97", seq: "8" }
]
最佳答案
您可以首先按降序排列 .sort()
,然后通过在数组上使用 .filter()
来从数组中获取唯一值,方法是仅将元素保留在找到的具有给定 id 的元素的第一个索引等于当前索引,如下所示:
const vg = [{"id":"99","seq":"8"}, {"id":"99","seq":"2"}, {"id":"98","seq":"8"}, {"id":"98","seq":"3"}, {"id":"97","seq":"8"}, {"id":"97","seq":"7"}];
const unq = vg
.sort(({seq: a}, {seq: b}) => b-a)
.filter(({id}, i) => i === vg.findIndex(({id: _id}) => id === _id));
console.log(unq);
关于javascript - Javascript中过滤具有相同id的对象数组并对序列进行排序并取最高的一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59675982/