javascript - Javascript中过滤具有相同id的对象数组并对序列进行排序并取最高的一个

标签 javascript arrays

我有一个像这样的数组。

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/

相关文章:

c - "initialization makes integer from pointer without a cast"数组初始化中逐渐减弱

javascript - 错误 : EPERM: operation not permitted while running puppeteer JavaScript node

javascript - 使用另存为对话框将 HTML 表格数据导出到 Excel (JQuery)

javascript - IE11 Javascript : let [array] of object. 条目 "SCRIPT1010: Expected identifier"错误

c - 在动态分配的结构(数组结构)中分配动态数组

java - 数组/堆栈/队列的大 O 表示法

c++ - WDK 的 C++ 中数组的 header 大小

javascript - TypeError : $(. ..).dialog 不是 devserver 上的函数

javascript - 从 FIrebase 实时数据库获取数据

javascript - 多个 `setState` 不同步 - 如果使用从 `await` 获取的值