javascript - Dedup并获取javascript中对象数组中键的最大值行

标签 javascript angularjs

我有一个对象数组。这个数组有重复的行。需要使用具有最大值的键之一来识别去重行。请注意,它已经按 ID 排序。

var myArray = [
  {id: 1, name: 'Foo Bar', email: 'foo@bar.com'},
  {id: 2, name: 'Foo Bar', email: 'foo@bar.com'},
  {id: 3, name: 'Foo Bar', email: 'foo@bar.com'},
  {id: 1, name: 'Jenny Block', email: 'jenny@bar.com'},
  {id: 2, name: 'Jenny Block', email: 'jenny@bar.com'},
];

这是对象的示例数组。我需要将以下内容作为输出

var myArray = [  
  {id: 3, name: 'Foo Bar', email: 'foo@bar.com'},
  {id: 2, name: 'Jenny Block', email: 'jenny@bar.com'},
];



for (var i = 0; i < myArray.length; i++) {
    for (var j = i + 1; j < myArray.length; j++) {
        if (myArray[i].name === myArray[j].name && myArray[i].email === myArray[j].email) {
            myArray.splice(j,1);
        }
    }
}

该代码仅在有 2 个重复项时才有效。我想要的东西适用于超过 2 个重复项,并且只包含具有最大 ID 的行

最佳答案

您可以在累加器中搜索相同的姓名和电子邮件,如果找不到则推送,或者如果 id 较小则更新。

var array = [{ id: 1, name: 'Foo Bar', email: 'foo@bar.com' }, { id: 2, name: 'Foo Bar', email: 'foo@bar.com' }, { id: 3, name: 'Foo Bar', email: 'foo@bar.com' }, { id: 1, name: 'Jenny Block', email: 'jenny@bar.com' }, { id: 2, name: 'Jenny Block', email: 'jenny@bar.com' }],
    result = array.reduce((r, o) => {
        var index = r.findIndex(p => o.name === p.name && o.email === p.email);
        if (index === -1) {
            r.push(o);
            return r;
        }
        if (r[index].id < o.id) {
            r[index] = o;
        }
        return r;
    }, []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - Dedup并获取javascript中对象数组中键的最大值行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54334365/

相关文章:

javascript - 如何在 click 方法中使用 jquery 访问下一个父元素?

带有 Material 设计的Angularjs无法实例化模块ngMaterial

javascript - 将 react-dropzone 与 nextjs 一起使用 - 输入类型为 "file"的多个属性在服务器渲染时卡在 false 上,如何将其设置为 true?

javascript - 如何在本地存储中设置每次点击记录并获取所有这些记录列表?

javascript - 当您通过 Tab 键浏览时,Bootstrap Datepicker 日历不会隐藏

javascript - 更改事件类以及导航丸中的内容

javascript - 选择仪表板技术——extjs、flex、angularjs 等

javascript - 如何在工厂服务中定义的ng-click中调用函数

javascript - AngularJS:处理任何事件的通用监听器

javascript - 在 Angular JS 中选择 - 我需要元素和值属性相同