javascript - 过滤对象数组以仅具有具有相同特定属性的该对象的最后一次出现

标签 javascript arrays filter

您将如何过滤一个对象数组,使该对象的最后一次出现具有相同的 foo 属性?即

给出:

[
{foo:1,id:1},
{foo:1,id:2},
{foo:2,id:3}
]

我想要这个:

[
{foo:1,id:2},
{foo:2,id:3}

我正在使用 es6,所以我可以从这里开始:

 this.data.filter((item,index,self)=> {
     return self.findIndex(o => o.foo === item.foo);
    })

最佳答案

var index = {};
var data = [{foo:1,id:1},{foo:1,id:2},{foo:2,id:3}];

data.forEach(item => index[item.foo] = item);

index[1];
// {foo:1,id:2}

Object.values(index)
// [{foo:1,id:2},{foo:2,id:3}]

关于javascript - 过滤对象数组以仅具有具有相同特定属性的该对象的最后一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43410059/

相关文章:

javascript - 如何在 Ruby on Rails 中合并列中的重复项?

javascript - 关于 dropDownList 问题的 AutoPostback

javascript - 动画替代 Javascript

c++ - 如何在单个数组中保存对象的动态数组

c - 未初始化的 char 数组的行为

PHP filter_var() - FILTER_VALIDATE_URL

javascript - 如何从 href 调用 javascript 函数?

javascript - 如何在第一个元素的 ng-repeat 中设置 Angular 模板中的变量

java - 此脚本中的 int 和 Integer 有什么区别?

arrays - 如何过滤包含字符串的数组和结构体对象数组,其中有字符串参数?