如何将对象数组[{..},{..}..]转化为二维数组,后台数据加工为excel表头与表格数据

324 阅读1分钟

一.需要用到的方法

  1. Object.keys(obj) --- 获取对象中的所有键名,返回一个该键名组成的数组。

例如

let obj={a:1,b:2,c:3}
console.log(Object.keys(obj)) //["a","b","c"]

2.Object.values(obj)---获取对象中的键值,返回一个该键值组成的数组。

例如

let obj={a:1,b:2,c:3}
console.log(Object.values(obj)) //[1,2,3]

二、使用场景:在使用excel导出功能时,需要按excel的生成要求,将表头数据加工为一个数组,而表体数据需要是一个二维数组,而后台服务器返回的数据往往是一个由多个对象组成的数组,此时就要求我们对后台返回的数据进行加工处理。

三、目的:后台数据:arr=[{name:张三,age:16,sex:男},{name:李四,age:30,sex:男}] 转化为:表格数据[['张三',16,'男'],['李四',30,'男']], 表头:['name','age','sex']

四、具体操作:

1.表头分析:表头项目是每个对象的键名,且都是一样的,所以挑选数组中任一个对象取出它的键名即可。

  const obj=arr[0]  //选数组第一个对象,将它的键名取出,作为表头数组数据
  const headerArr=Object.keys(obj) 
  console.log(headerArr) //['name','age','sex']

2.表格数据分析:遍历数组,得到每一个对象,获取每个对象的键值

const bodyArr= arr.map(item=>{
return Object.values(item)
})

console.log(bodyArr) //[['张三',16,'男']['李四',30,'男']]

五、为什么对象数组能转化为二维数组

实质上是object.values(obj)方法将原本数组中的对象元素转化成了数组元素,形成了数组包数组的二维数组。