day173-数组-结构转换

要点

给出特定结构的数据,转换成特定的数据结构。

  1. 循环
  2. 递归

源数组->目标数组

源数组

let data = [
{
'文风': {
'过译': [
{ 'errorLevel': '一般般', 'count': 5 }
// ...
],
'漏译': [
{ 'errorLevel': '非常严重', 'count': 2 },
{ 'errorLevel': '一般般', 'count': 10 }
]
// ...
}
// ...
}
]

目标数组

let res = [
{ name: '文风', '过译': 5, '漏译': 12, '增译': 3 },
{ name: '准确性', '过译': 21, '漏译': 20, '增译': 10 },
{ name: '流畅性', '过译': 9, '漏译': 12, '增译': 2 },
{ name: '术语', '过译': 34, '漏译': 24, '增译': 34 }
// ...
]

循环

let obj = Object.entries(...data).map(([key, value]) => {
let newVal = Object.entries(value).map(([objkey, objVal]) => {
let objVals = [...objVal].reduce((acc, obj) => {
for (let k in obj) {
if (obj.hasOwnProperty(k)) {
acc[k] = (acc[k] || 0) + obj[k]
}
}
return acc
}, {})['count']
return {[objkey]: objVals}
})
return { name: key, ...Object.assign(...newVal), total: sum }
})
// return [].concat(obj)
console.log(obj)

递归

function flatData(object) {
for(let i in object) {
if(typeof object[i] == typeof {}){
flatData(object[i])
}
console.log(object[i])
if (Array.isArray(object[i])) {
let tmp = object[i]
object[i] = tmp.reduce((acc, obj) => {
for (let k in obj) {
if (obj.hasOwnProperty(k)) {
acc[k] = (acc[k] || 0) + obj[k]
}
}
return acc
}, {})['count']
}
}
// return object
}
flatData(data)
文章作者: lmislm
文章链接: http://lmislm.com/2019/07/05/2019-07-05/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LMISLMのBlog