gpt4 book ai didi

javascript - 从对象数组中查找最大日期并通过在 Javascript 中添加标志来更新

转载 作者:行者123 更新时间:2023-11-28 17:30:54 24 4
gpt4 key购买 nike

下面是一个包含两个属性 emp_namedate 的对象数组,我想通过添加标记来更新记录,其中 date 应该是与emp_name相对应的其他日期中最大的。

let arr_of_obj = [{emp_name:'Mark',date:new Date('2018/05/01')},
{emp_name:'Mark',date:new Date('2018/05/02')},
{emp_name:'John',date:new Date('2018/04/05')},
{emp_name:'John',date:new Date('2018/03/22')},
{emp_name:'Mark',date:new Date('2018/05/06')}];

假设上面的arr_of_obj应该更新两个条目,即

[{emp_name:'Mark',date:new Date('2018/05/21')},
{emp_name:'Mark',date:new Date('2018/05/22')},
{emp_name:'John',date:new Date('2018/04/15'),max:true},
{emp_name:'John',date:new Date('2018/03/22')},
{emp_name:'Mark',date:new Date('2018/05/26'),max:true}]

最佳答案

const arr = [{emp_name:'Mark',date:new Date('2018/05/01')},
{emp_name:'Mark',date:new Date('2018/05/02')},
{emp_name:'John',date:new Date('2018/04/05')},
{emp_name:'John',date:new Date('2018/03/22')},
{emp_name:'Mark',date:new Date('2018/05/06')}]

const max_map = {}; // Holds map of (name => obj_with_max_date) items,
arr.forEach((item, i)=> {
// Checking whether emp_name is not stored in map, then store the object
// and if `emp_name` is already exists in map, comparing `date` fields
if (!max_map[item.emp_name] || max_map[item.emp_name].date < arr[i].date) {
max_map[item.emp_name] = arr[i];
}
});

// Traversing the map and assigning flags for each emp_name
Object.keys(max_map).forEach( name => {
max_map[name].max = true;
});

DEMO

关于javascript - 从对象数组中查找最大日期并通过在 Javascript 中添加标志来更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50470183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com