我知道有很多方法可以过滤数组中的唯一值,但是过滤数组中给定字段具有唯一值的对象呢?
例如,我有 [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/