gpt4 book ai didi

Javascript ES6 将对象数组映射到 Set 或按不同属性过滤掉

转载 作者:行者123 更新时间:2023-12-05 09:10:22 26 4
gpt4 key购买 nike

我有一个包含名称和年龄属性的对象数组,我想过滤掉数组中不同年龄的集合,所以我可以做类似的事情

function distinctAges() {
const guests = [
{name: 'Kiley', age: 24},
{name: 'Tom', age: 36},
{name: 'Jason', age: 67},
{name: 'Mike', age: 24},
...];

let ageSet = new Set();
guests.foreach(g => ageSet.add(g.age));
return ageSet;
}

有没有像 Distinct 操作一样不使用 Set 数据类型?如果使用 Set,是否可以将转换写在一行中?

最佳答案

集合是 JS 当前获取不同值数组的方式。您可以将一个对象数组映射到一个值数组,创建一个集合,然后传播回一个数组:

const distinctBy = (prop, arr) => [...new Set(arr.map(o => o[prop]))]

const guests = [{"name":"Kiley","age":24},{"name":"Tom","age":36},{"name":"Jason","age":67},{"name":"Mike","age":24}]

const result = distinctBy('age', guests)

console.log(result)

为了使其更通用,您可以将 prop 替换为谓词函数:

const distinctBy = (predicate, arr) => [...new Set(arr.map(predicate))]

const guests = [{"name":"Kiley","age":24},{"name":"Tom","age":36},{"name":"Jason","age":67},{"name":"Mike","age":24}]

const result = distinctBy(o => o.age, guests)

console.log(result)

关于Javascript ES6 将对象数组映射到 Set 或按不同属性过滤掉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61533745/

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