gpt4 book ai didi

javascript - 如何在 JavaScript 中将嵌套数组转换为 'keyed' 数组?

转载 作者:行者123 更新时间:2023-12-02 01:51:45 24 4
gpt4 key购买 nike

我有一个如下所示的嵌套数组:

[[“组织”、“ID”、“名称”]、[“ACME”、“123456”、“巴特·辛普森”]、[“ACME”、“654321”、“内德·弗兰德斯”] ,[“ACME”,“1234”,“埃德娜·卡巴佩尔”],[“雅虎”,“666666”,“邦·斯科特”],[“雅虎”,“99999”,“尼尔·杨”],[“雅虎” ,“111111”,“仙妮亚·唐恩”]]

每个数组中的第一个值是 ID 和名称可以所属的组织的名称。

我正在尝试找到一种最简单的方法,将 ID 和名称属于同一公司的所有实例分组到一个“键”下。

所以上面的结果会是这样的:

{
"ACME": [
{
"ID": 123456,
"Name": "Bart Simpson"
},
{
"ID": 654321,
"Name": "Ned Flanders"
},
{
"ID": 1234,
"Name": "Edna Kabappel"
}
],
"Yahoogle": [
{
"ID": 666666,
"Name": "Bon Scott"
},
{
"ID": 99999,
"Name": "Neil Young"
},
{
"ID": 111111,
"Name": "Shania Twain"
}
]
}

我一直在玩 for 循环,但我最终得到了很多行代码,试图检测公司名称何时与以前的不同,并且陷入了真正的困惑。

我在这里进行了很多搜索,试图找到类似的东西,但没有任何运气。

大约 18 年后,我才刚刚出于个人兴趣再次开始编码,而且我又是新手了。

预先感谢您提供的任何帮助。

最佳答案

有很多解决方案可以达到相同的结果,其中一个使用 lambda 和 reduce:这是一个通用解决方案,只需调整输出推送即可构建最终的 json。

const datas = [
["Organisation", "ID", "Name"],
["ACME", "123456", "Bart Simpson"],
["ACME", "654321", "Ned Flanders"],
["ACME", "1234", "Edna Kabappel"],
["Yahoogle", "666666", "Bon Scott"],
["Yahoogle", "99999", "Neil Young"],
["Yahoogle", "111111", "Shania Twain"]
];

const titles = datas.shift()
const groupBy = (x,f)=>x.reduce((a,b)=>((a[f(b)]||=[])
.push({[titles[1]]:b[1], [titles[2]]:b[2]}),a),{});

const result = groupBy(datas, v => v[0])

console.log(result)

关于javascript - 如何在 JavaScript 中将嵌套数组转换为 'keyed' 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70184139/

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