首页 > 解决方案 > 使用条件过滤对象数组

问题描述

我想根据“value”键的最大值过滤一组对象,并通过它们的“id”键区分每个对象。

例子 :

var array = [
  {
    id: 1,
    value: 10
  },
  {
    id: 1,
    value: 2
  },
  {
    id: 2,
    value: 6
  },
  {
    id: 2,
    value: 5
  },
  {
    id: 2,
    value: 1
  }
]

和预期的输出:

array = [
 {
  id: 1,
  value: 10
 },
 {
  id: 2,
  value: 6
 }
]

谢谢

标签: javascriptarraysfilterconditional-statements

解决方案


这是一种可能的方法

var array = [
  {
    id: 1,
    value: 10
  },
  {
    id: 1,
    value: 2
  },
  {
    id: 2,
    value: 6
  },
  {
    id: 2,
    value: 5
  },
  {
    id: 2,
    value: 1
  }
]

let objdis = {};

array.forEach(val => {
  if(objdis[val.id] !== undefined){
      objdis[val.id].push(Number(val.value));
  }else{
    objdis[val.id] = [];
    objdis[val.id].push(val.value);
  }
})

let returningObj = [];

for (prop in objdis){
  let obj = {};
  obj.id = Number(prop);
  obj.Value = Math.max(...objdis[prop])
  returningObj.push(obj);
}

console.log(returningObj);


推荐阅读