gpt4 book ai didi

javascript - 将类似表格的二维数组转换为对象 (JavaScript)

转载 作者:行者123 更新时间:2023-11-29 19:16:26 26 4
gpt4 key购买 nike

我有一个二维数组,如下所示:

var myArray = [
['Name', 'Age', 'Profession'],
['John', 34, 'Teacher'],
['Jane', 45, 'Artist']
];

我想将这个数组转换为如下所示的对象:

var myObject =
{
"Name":
{
"Name": "Name",
"Age": "Age",
"Profession": "Profession"
}
"John":
{
"Name": "John",
"Age": 34,
"Profession": "Teacher"
}
"Jane":
{
"Name": "Jane",
"Age": 45,
"Profession": "Artist"
}
};

another thread我遇到了 Array.prototype.reduce() 并且我能够执行以下操作:

var myObject = myArray.reduce(function(result, currentItem) {
result[currentItem[0]] = currentItem;
return result;
}, {})

Logger.log(myObject);
// {John=[John, 34.0, Teacher], Jane=[Jane, 45.0, Artist], Name=[Name, Age, Profession]}

但是,我不知道如何应用 reduce() 来获取嵌套对象,或者我是否需要其他方法。

安德烈亚斯

编辑:

  • 我正在寻找一个动态解决方案,即:我事先不知道我的数组包含多少个元素或它们的值是什么。
  • 我更喜欢一种比遍历所有元素(如果可能)更快、更优雅的解决方案。

最佳答案

一个包含 reduce 和一个对象以及一些嵌套属性的解决方案。

var myArray = [['Name', 'Age', 'Profession'], ['John', 34, 'Teacher'], ['Jane', 45, 'Artist']],
result = myArray.reduce(function (r, a) {

// get the first element ('Name', 'John', 'Jane') of myArray and take it as a key
// for the object. generate a new object if there is no object available
// read here: r.Name = r.Name || {}
r[a[0]] = r[a[0]] || {};

// iterate over ['Name', 'Age', 'Profession']
myArray[0].forEach(function (b, i) {

// assign the according value to the according property of the object
// read here: r.Name.Name = 'Name'
// next r.Name.Age = 'Age'
r[a[0]][b] = a[i];
});
return r;
}, {});

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

关于javascript - 将类似表格的二维数组转换为对象 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34993247/

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