javascript - 过滤唯一字段值的数组

标签 javascript arrays filter

我知道有很多方法可以过滤数组中的唯一值,但是过滤数组中给定字段具有唯一值的对象呢?

例如,我有 [obj1, obj2, obj3, ...],其中每个对象都具有以下形式:

{
firstName: "...",
lastName: "..."
}

如何过滤数组以得到最终数组,其中所有对象都具有唯一的名字?一行会更好,但不会以可读性为代价。

最佳答案

只过滤那些在数组中没有找到的项目。我们将 cond 定义为返回两个项目是否应被视为“相等”。

function uniqueBy(a, cond) {
  return a.filter((e, i) => a.findIndex(e2 => cond(e, e2)) === i);
}

const test = [
  { firstname: "John", lastname: "Doe" },
  { firstname: "Jane", lastname: "Doe" },
  { firstname: "John", lastname: "Smith" }
];

console.log(uniqueBy(test, (o1, o2) => o1.firstname === o2.firstname));

关于javascript - 过滤唯一字段值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45124786/

相关文章:

c++ - 数组 C++ 中销售最多和最少的项目

c# - openfiledialog 的过滤属性不起作用

php - jquery中的复杂过滤器

javascript - 是否有图像的 click() 函数?

javascript - 如何取消订阅 RxJS 5 可观察对象?

javascript - 保持元素可滚动直到到达最后一个内容

javascript - 在react中加载jquery依赖库

javascript - 按嵌套键值对对象数组进行排序

python - 在 numpy 数组中计算值发生更改之前的长度以及转换次数的最佳方法(最好是 numpythonic)?

javascript - 我无法让 Javascript 中的过滤器工作