gpt4 book ai didi

javascript - 对象数组到包含数组的对象数组

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

我有一个对象数组:

 var arr = [
{
timemark: "2017-03-01",
db_total: c1,
db_used: d1,
hosts: e1,
items: f1
},{
timemark: "2017-03-02",
db_total: c2,
db_used: d2,
hosts: e2,
items: f2
},{
timemark: "2017-03-03",
db_total: c3,
db_used: d3,
hosts: e3,
items: f3
},..]

我正在努力如何将它转换为另一个具有不同结构的数组:

var result = [
{
topic: "db_total",
data: [
{
x: "2017-03-01",
y: c1
},{
x: "2017-03-02",
y: c2
},{
x: "2017-03-03",
y: c3
},...]
},{
topic: "db_used",
data: [
{
x: "2017-03-01",
y: d1
},{
x: "2017-03-02",
y: d2
},{
x: "2017-03-03",
y: d3
},...]
},{
topic: "hosts",
data: [
{
x: "2017-03-01",
y: e1
},{
x: "2017-03-02",
y: e2
},{
x: "2017-03-03",
y: e3
},...]
},{
topic: "items",
data: [
{
x: "2017-03-01",
y: f1
},{
x: "2017-03-02",
y: f2
},{
x: "2017-03-03",
y: f3
},...]
},...];

我知道我必须做这样的事情:

//convert
var result = [];
for (var i=0; i<arr.length; i++) {
result[i]=[arr[i].timemark];
}

创建数组的数组:

[
[2017-03-01],
[2017-03-02],
[2017-03-03]
]

几个小时后才开始。但是我找不到如何开始在数组而不是数组中创建对象的方法?努力迈出婴儿的步伐:)

但我在理解代码片段时确实遇到了问题,并且可能使用错误的语法无法使其正常工作。

谁能解释一下在这种情况下如何正确使用循环?

最佳答案

你可以做这样的逻辑;对每个分组进行映射,并编译最终结果对象;

var arr = [
{
timemark: "2017-03-01",
db_total: "c1",
db_used: "d1",
hosts: "e1",
items: "f1"
},{
timemark: "2017-03-02",
db_total: "c2",
db_used: "d2",
hosts: "e2",
items: "f2"
},{
timemark: "2017-03-03",
db_total: "c3",
db_used: "d3",
hosts: "e3",
items: "f3"
}];

var result = [];
Object.keys(arr[0])
.filter(field => field != "timemark")
.forEach(field => result.push(finalObj(field, arr.map(e => xy(e.timemark, e[field])))));

console.log(result);

function xy(x, y) {
return { x : x, y : y };
}

function finalObj(name, arr) {
return { topic : name, data : arr };
}

因为你建议你有更多的字段,因此最终对象中有更多的 topic,如果是这样的话,我已经修改了,这样你添加的字段越多,它就会自动出现在最终结果对象中。 (timemark 字段除外)

关于javascript - 对象数组到包含数组的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42589952/

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