gpt4 book ai didi

javascript - 如何将对象数组的数据转换为更有意义的嵌套对象和数组结构?

转载 作者:行者123 更新时间:2023-11-30 11:04:34 24 4
gpt4 key购买 nike

除非结构良好,否则数据毫无用处。我想通过 vanilla JavaScript 将对象数组转换为更有意义的结构化对象 - 以减少世界上的熵:)

公司的值形成嵌套的命名数组,车辆的值形成嵌套的命名对象。最困难的任务是动态设置 if 语句。我卡在了代码的最后,希望 JS 专家能帮助我。

//源数据格式

var inputs = [
{"vehicle":"car", "company":"Toyota", "model":"Corolla"},
{"vehicle":"car", "company":"Toyota", "model":"Rav4"},
{"vehicle":"car", "company":"Toyota", "model":"Camry"},
{"vehicle":"car", "company":"Chevrolet", "model":"Malibu"},
{"vehicle":"car", "company":"Chevrolet", "model":"Camaro"},
{"vehicle":"rocket", "company":"Tesla", "model":"SpaceX"}
];

//目标数据格式

const data = {
car:{
Toyota:[
{"vehicle"="car","company"="Toyota", "model"="Corolla"},
{"vehicle"="car","company"="Toyota", "model"="Rav4"},
{"vehicle"="car","company"="Toyota", "model"="Camry"}
],
Chevrolet:[
{"vehicle"="car","company"="Chevrolet", "model"="Malibu"},
{"vehicle"="car","company"="Chevrolet", "model"="Camaro"}
]
},
rocket:{
Tesla:[
{"vehicle"="rocket","company"="Tesla", "model"="SpaceX"}
]
}
};

//未完成的解决方案

// Get all vehicle names.
var vehicles = [];
for (var [key, obj] of inputs.entries()) {
vehicles.push(obj.vehicle);
}

// Single out only unique vehicle names.
var uniqueVehicles = [...new Set(vehicles)];

// Get all company names.
var arr = [];
for (var [key, obj] of inputs.entries()) {
arr.push(obj.company);
}

// Single out only unique company names.
var uniqueCompanies = [...new Set(arr)];

// Group objects into arrays by company names.
var dataProperties = {};
for (var comp of uniqueCompanies) {
dataProperties[comp] = inputs.filter(obj => obj.company === comp);
}

// Group objects into arrays by vehicle names.
var data = {};
for (var vehi of uniqueVehicles) {
data[vehi] = inputs.filter(o => o.vehicle === vehi);
}
// data;
// dataProperties;

最佳答案

这是我的做法:

function transform(data) {
let result = {};
data.forEach(element => {
// Reuse the existing vehicle object, or create an empty one if it doesn't exist
result[element.vehicle] = result[element.vehicle] || {};
// Reuse the existing company array, or create an empty one if it doesn't exist
result[element.vehicle][element.company] = result[element.vehicle][element.company] || [];
result[element.vehicle][element.company].push(element);
})
return result;
}

const inputs = [
{"vehicle":"car", "company":"Toyota", "model":"Corolla"},
{"vehicle":"car", "company":"Toyota", "model":"Rav4"},
{"vehicle":"car", "company":"Toyota", "model":"Camry"},
{"vehicle":"car", "company":"Chevrolet", "model":"Malibu"},
{"vehicle":"car", "company":"Chevrolet", "model":"Camaro"},
{"vehicle":"rocket", "company":"Tesla", "model":"SpaceX"}
];

const output = transform(inputs);
console.log(output);

关于javascript - 如何将对象数组的数据转换为更有意义的嵌套对象和数组结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56199614/

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