javascript - 使用条件过滤对象数组
问题描述
我想根据“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
}
]
谢谢
解决方案
这是一种可能的方法
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);
推荐阅读
- postgresql - Postgresql:每午夜 12 点执行一次查询
- powershell - 数组中奇怪的不存在的属性
- django - 需要帮助连接 django 以使用 nginx 和 gunicorn 做出反应
- c# - 如何比较两条线?
- .net - IEnumerable(of String) 被 XmlSerializer 忽略
- bash - 如何在成功完成 BTEQ 作业后发送电子邮件?
- jetty - Jetty 加载启动页面失败,抛出空指针异常
- xamarin - 类似于 Xamarin.Forms 4 AppShell Navigation 中 ViewModels 的 Prism INavigationAware 接口?
- java - 如何杀死一个犀牛脚本
- kubernetes - Kubectl如何连接到配置文件