gpt4 book ai didi

等效于 C# ToDictionary 的 JavaScript

转载 作者:行者123 更新时间:2023-11-30 07:12:08 26 4
gpt4 key购买 nike

我正在寻找一种获取以下列表的方法:

directory = [
{
name: "Albert",
age: 40,
gender: "M"
},
{
name: "Suzanne",
age: 27,
gender: "F"
},
{
name: "Robert",
age: 19,
gender: "M"
},
{
name: "Connie",
age: 87,
gender: "F"
}
]

并在键 name 上创建一个字典:

dictionary = {
"Albert": {
name: "Albert",
age: 40,
gender: "M"
},
"Suzanne": {
name: "Suzanne",
age: 27,
gender: "F"
},
"Robert": {
name: "Robert",
age: 19,
gender: "M"
},
"Connie": {
name: "Connie",
age: 87,
gender: "F"
}
}

这类似于 C# ToDictionary方法。我知道我可以做一些事情,比如在 for 循环或 .each 调用中遍历 directory,并修改 dictionary< 的值 每次迭代。但是,我更愿意进行类似函数式编程的分配,例如

dictionary = directory.toDictionary(p => p.name);

在 ES6 或 lodash 中是否存在这样的方法?

最佳答案

Javascript 的 Map非常类似于字典。它的实例很方便 hasgetsetkeysvalues 方法。它也可以通过 forEach 方法直接迭代。

您可以使用“键值对”数组构造一个Map。 (在引号中,因为实际上我们以某种类似元组的方式使用数组)。

要创建一个 Map 用作字典,您需要:

const directory=[{name:"Albert",age:40,gender:"M"},{name:"Suzanne",age:27,gender:"F"},{name:"Robert",age:19,gender:"M"},{name:"Connie",age:87,gender:"F"}];

const myDict = new Map(
directory.map(p => [p.name, p])
);

console.log("Has Albert:", myDict.has("Albert"))

myDict.forEach(p => { console.log(`${p.name} has age ${p.age}`) });

关于等效于 C# ToDictionary 的 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57083752/

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