gpt4 book ai didi

javascript - 如何使用嵌套数组在javascript中使用第一个数组作为对象并将数组的其余部分作为值来形成对象

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

我得到了一个这样的数组:

data = [
['first_name', 'second_name', 'sex'],
['Jacob', 'David', 'M'],
['Kathryn', 'Gardener', 'F'],
['Jamaal', 'Dave', 'Unknown']
].

解决方案是将数组作为对象返回,如下所示:

[
{ first_name: "Jacob", second_name: "David", sex: "M" },
{ first_name: "Kathryn", second_name: "Gardener", sex: "F" }
{....}
];

我写了下面的代码:

var object = {};
var arrays = [];
for (i = 0; i < data.length; i++){
for (var j = i; j < data.length; j++){
var keys = data[0][i];
var values = data [j][i];
object[keys] = values;
}
arrays.push(object);
};

但我得到的输出是:

[
{
first_name :'Jamaal',
second_name : 'Dave',
sex : 'unknown'
},
{
first_name :'Jamaal',
second_name : 'Dave',
sex : 'unknown'
},
{
first_name :'Jamaal',
second_name : 'Dave',
sex : 'unknown'
},
{
first_name :'Jamaal',
second_name : 'Dave',
sex : 'unknown'
}
];

我也尝试了几种方法,要么我最终只能创建一个对象......

最佳答案

您需要在第一个循环内使用新对象(引用),否则每一行都会得到相同的对象。

var data = [ ['first_name', 'second_name', 'sex'], ['Jacob', 'David', 'M'], ['Kathryn', 'Gardener', 'F'], ['Jamaal', 'Dave', 'Unknown']],
result = [],
i, j,
object;

for (i = 0; i < data.length; i++) {
object = {}; // take a new object
for (j = 0; j < data[i].length; j++) { // start from zero
object[data[0][j]] = data[i][j]; // use j as last key
}
result.push(object);
}

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

使用 Object.fromEntries 的更短方法.

const
getObjects = ([header, ...data]) => data.map(values =>
Object.fromEntries(values.map((value, index) => [header[index], value])));

var data = [['first_name', 'second_name', 'sex'], ['Jacob', 'David', 'M'], ['Kathryn', 'Gardener', 'F'], ['Jamaal', 'Dave', 'Unknown']],
result = getObjects(data);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何使用嵌套数组在javascript中使用第一个数组作为对象并将数组的其余部分作为值来形成对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59156487/

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