gpt4 book ai didi

JavaScript - 将数组转换为 map

转载 作者:行者123 更新时间:2023-12-03 09:56:42 24 4
gpt4 key购买 nike

给定一个对象数组:

var projects = [
{
id: 1,
name: 'Trader Portal'
},
{
id: 2,
name: 'Risk Engine'
},
];

将其转换为以下结构的最优雅方法是什么——本质上是 ID 数组以及对象映射:

{
projects: [
1,
2
],
projectMap: {
1: {
id: 1,
name: 'Trader Portal'
},
2: {
id: 2,
name: 'Risk Engine'
}
}
}

我使用下划线(见下文或我的 codepen )做到了这一点,但有更好的方法吗?例如,这可以使用函数式编程以更具声明性的方式完成吗?有没有一种方法可以通用化代码以处理任何类型对象的数组?

var projects = [
{
id: 1,
name: 'Trader Portal'
},
{
id: 2,
name: 'Risk Engine'
},
];

var result = {};

result.projects = _.map(projects, function(project) {
return project.id;
});

result.projectMap = {};
_.each(projects, function(project) {
result.projectMap[project.id] = project;
});

console.log(JSON.stringify(result));

最佳答案

如果您只对 @jeremija 中的第二个示例感兴趣,那么 Ramda 有一个内置函数,indexBy ,您可以使用 like this :

R.indexBy(R.prop('id'), projects);

关于JavaScript - 将数组转换为 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37657865/

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