Javascript 避免在数据转换期间重复代码
我有一些虚拟数据,如下所示:Javascript 避免在数据转换期间重复代码,javascript,javascript-objects,Javascript,Javascript Objects,我有一些虚拟数据,如下所示: data: { first: { date_2019_01: 10, date_2019_02: 15, .... }, second: { date_2019_01: 30, date_2019_02: 35, .... } } 我必须将这些初始数据转换为以下格式,其中日期作为键转换为月份,其值作为增长 first: [ {
data: {
first: {
date_2019_01: 10,
date_2019_02: 15,
....
},
second: {
date_2019_01: 30,
date_2019_02: 35,
....
}
}
我必须将这些初始数据转换为以下格式,其中日期作为键转换为月份,其值作为增长
first: [
{
month: 1,
growth: 10
},
{
month: 2,
growth: 15
},
...
],
second: [
{
month: 1,
growth: 30
},
{
}
]
在我的解决方案中,我获取密钥并将其拆分,以获得我想要的月份,并将其推送到新阵列。但这里我的代码重复了。我正在学习的代码质量,其中包括干燥的概念以及
请任何人帮我用更好的格式写这段代码
多谢各位
let first = data["first"];
let firstMonth = [];
Object.keys(first).map(function(key) {
firstMonth.push({
month: key.split('_')[2],
growth: first[key]
});
});
let second = data["second"];
let secondMonth = [];
Object.keys(second).map(function(key) {
secondMonth.push({
month: key.split('_')[2],
growth: second[key]
});
});
let finalData = {
first: firstMonth,
second: secondMonth
}
一个选项是
.reduce
中的.map
。您可以使用Object.entries
而不是Object.keys
一次检索键和值,这将减少所需的语法量:
const数据={
第一:{
日期:2019年1月10日,
日期:2019年2月15日,
},
第二:{
日期:2019年1月30日,
日期:2019年02月35日,
}
};
const newData=Object.entries(data).reduce((a,[key,obj])=>{
a[key]=Object.entries(obj.map)([key,growth])=>({
月份:编号(键片(10)),
生长
}));
返回a;
}, {});
console.log(newData)代码>一个选项是中的.map
。您可以使用Object.entries
而不是Object.keys
一次检索键和值,这将减少所需的语法量:
const数据={
第一:{
日期:2019年1月10日,
日期:2019年2月15日,
},
第二:{
日期:2019年1月30日,
日期:2019年02月35日,
}
};
const newData=Object.entries(data).reduce((a,[key,obj])=>{
a[key]=Object.entries(obj.map)([key,growth])=>({
月份:编号(键片(10)),
生长
}));
返回a;
}, {});
console.log(newData)代码>当涉及到代码质量时,一个好方法是将逻辑提取到具有有意义名称的函数中。代码有增长的趋势,因此将逻辑提取为位(函数)在未来将具有许多优势。在我看来,较短的语法/逻辑并不总是转化为高质量的代码,在许多情况下,与较短且复杂的语法相比,易于阅读/理解的代码(甚至更长一点)更可取
const数据={
第一:{
日期:2019年1月10日,
日期:2019年2月15日,
},
第二:{
日期:2019年1月30日,
日期:2019年02月35日,
}
};
函数转换器monthData(monthData,resultar){
Object.key(monthData).map(function(key){
结果推({
月份:编号(键片(10)),
增长:monthData[关键]
});
});
}
让convertedMonthData={};
Object.keys(数据).map(函数(键){
const monthData=数据[键];
convertedMonthData[键]=[];
convertMonthData(monthData,convertedMonthData[key]);
});
console.log(convertedMonthData)代码>当涉及到代码质量时,一个好方法是将逻辑提取到具有有意义名称的函数中。代码有增长的趋势,因此将逻辑提取为位(函数)在未来将具有许多优势。在我看来,较短的语法/逻辑并不总是转化为高质量的代码,在许多情况下,与较短且复杂的语法相比,易于阅读/理解的代码(甚至更长一点)更可取
const数据={
第一:{
日期:2019年1月10日,
日期:2019年2月15日,
},
第二:{
日期:2019年1月30日,
日期:2019年02月35日,
}
};
函数转换器monthData(monthData,resultar){
Object.key(monthData).map(function(key){
结果推({
月份:编号(键片(10)),
增长:monthData[关键]
});
});
}
让convertedMonthData={};
Object.keys(数据).map(函数(键){
const monthData=数据[键];
convertedMonthData[键]=[];
convertMonthData(monthData,convertedMonthData[key]);
});
console.log(convertedMonthData)代码>我们可以改变数据结构吗?我们可以改变数据结构吗?