数组与对象的互相转换

940 阅读1分钟

数组转换成对象

目标

[ { label: '男', value: 0 }, { label: '女', value: 1 } ]

转换成

{0: '男', 1:'女'}

代码实现

const arr = [
  { label: '男', value: 0 },
  { label: '女', value: 1 }
]
function f1(arr) {
  return arr.reduce((obj, cur) => {
    obj[cur.value] = cur.label
    return obj
  }, {})
}
function f2(arr) {
  let obj = {}
  arr.forEach(item => {
    obj[item.value] = item.label
  })
  return obj
}
const obj1 = f1(arr) // obj ===> {0: '男', 1:'女'}
const obj2 = f2(arr) // obj ===> {0: '男', 1:'女'}
console.log(obj1)
console.log(obj2)

结果展示

对象转换成数组

目标

{ 0: '男', 1:'女'}

转换成

[{label: '男', value: 0},{label: '女', value: 1}]

代码实现

const obj = { 0: '男', 1:'女'}
function f(obj) {
  let arr = []
  for (const key in obj) {
    arr.push({
      label: obj[key],
      value: key
    })
  }
  return arr
}
const arr = f(obj) // arr ===>  [{label: '男', value: 0},{label: '女', value: 1}]
console.log(arr)

结果展示