数组与对象的相互转换

99 阅读1分钟

数组与对象的相互转换

【写在前面】:为什么突然想写这个呢?我习惯了自己在前端写枚举,例:enum Board {'BATCH'='批量','BATCH_OUTER'='批量-外部'}这样自己去调用的时候比较方便定义ts的时候也简单(用keyof typeof Board就可以了)。

但是往往在实际应用中,后对会返回枚举的数据过来的,我们尽量的是要去操纵数据,而不是自己写枚举数据

1、数组转对象

let arr=[{name:批量,value:'BATCH'},{name:'批量-外部',value:'BATCH_OUTER'}]

转化为

let obj = {'BATCH':'批量','BATCH_OUTER':'批量-外部'}

方案一

思路:

  1. 使用数组的reduce方法遍历数组
  2. 定义一个空对象
  3. 将遍历得到的每一个对象中的value值当做新对象的key,label的值当做新对象的值
  4. 循环结束后将obj的值返回给调用者即可
let arr=[{name:批量,value:'BATCH'},{name:'批量-外部',value:'BATCH_OUTER'}]

function arrToObj=(arr)=>{
return arr.reduce((obj,item)=>{
obj[item.value]=item.name
return obj
},{})
}
const obj = arrToObj(arr)

方案二

思路

  1. 使用数组的forEach方法遍历数组
  2. 定义一个空对象
  3. 将遍历得到的每一个对象中的value值当做新对象的key,label的值当做新对象的值
  4. 循环结束后将obj的值返回给调用者即可
let arr=[{name:批量,value:'BATCH'},{name:'批量-外部',value:'BATCH_OUTER'}]

function arrToObj=(arr)=>{
let obj = {}
 arr.forEach((item)=>{
obj[item.value]=item.name
})
}
const obj = arrToObj(arr)