javascript - 通过比较共享 value2 的元素的 value1 从数组中删除对象

标签 javascript jquery

我的数组中有很多对象。我想获取具有相同“id”的任何对象,并将“num”值与同一“id”的其他“num”值进行比较。我希望将整个对象数组减少为每个 id 仅有最大数量的对象数组。这些可以重复,但任何小于最高编号的对象都应删除。所有其他键/值对也应该在创建的任何最终对象数组中一起出现。

{
  random : ajabl,
  num : 5, // should stay, highest number is 5
  id :10
}
{
  random: jlsl,
  num : 4, // should go, highest number is 5
  id : 10 
}
{
  random: jlssssl,
  num : 5, // should stay, highest number is 5
  id : 10
}
{ 
  random: abcd,
  num : 1, // should go, highest number is 5
  id : 10
}
{
  random : xy45,
  num : 2, // Should stay, highest number is 2
  id : 11
}

最佳答案

我认为你可以通过以下方式使用ES6来实现它:

let arr = [{
  num : 5, // should stay, highest number is 5
  id :10
},
{
  num : 4, // should go, highest number is 5
  id : 10 
},
{
  num : 5, // should stay, highest number is 5
  id : 10
},
{ 
  num : 1, // should go, highest number is 5
  id : 10
},
{
  num : 2, // Should stay, highest number is 2
  id : 11
}];


let ids = Array.from(new Set(arr.map(i => i.id)));

let result = [];
Array.from(new Set(arr.map(i => i.id))).forEach(a => {
  let tmp = arr.filter(i => i.id === a).sort((a,b) => b.num - a.num);
  tmp.filter(i => i.num === tmp[0].num).map(j => result.push(j));
});

console.log(result);

Set运算符用于删除重复项。

首先将 ids 放入数组中,然后循环获取每个数组的每组对象,最后通过添加结果数组来将它们合并起来

关于javascript - 通过比较共享 value2 的元素的 value1 从数组中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59743117/

相关文章:

javascript - 通过值查找嵌套对象键

jquery - 如何在悬停时调整列的大小?

javascript - 从 JQuery 到 Java (JAX-RS) 服务器的 POST 请求中从未收到参数

javascript - 从字符串中提取特定字符

php - 更新页面上的数据而不刷新

javascript - UIWebView 未正确评估 javascript

php - 为什么使用 POST 方法发送值时总是收到 0(零)

jquery - 当我选择特定选项 jQuery 时如何删除类

javascript - 如何找到当前 URL 并更改 CSS 规则?

javascript - 如何将数据从nodejs传递到html脚本标签内部