对象转数组,数组转对象的常用方法

对象转数组的方法(常见三种)

在日常开发中我们往往会遇到对象转数组下面提供几种方法:

  1. Object.values(obj) //属性值    
  2. Object.keys(obj) //属性名  
  3. Object.entries(obj) //属性名和属性值

例: 

  let obj = {
        '0': { "2024-02-27": 0 },
        "1": { "2024-02-28": 0},
        "2": { "2024-02-29": 0 },
        "3": { "2024-02-30": 0 },

        
   };
    console.log(Object.values(obj)); //属性值   //[{"2024-02-27":0},{"2024-02-28":0},{"2024-02-29":0},{"2024-02-30":0}]
    console.log(Object.keys(obj));//属性名   //['0','1','2','3']
    console.log(Object.entries(obj)); //属性名和属性值 //[ ['0':{"2024-02-27":0}],["1":{ "2024-02-28":0}],["2": {"2024-02-29":0}],["3":{"2024-02-30":0}]]

数组转对象

1.Object.fromEntries方法
const newArray = [
  ['key 1', 'value 1'],
  ['key 2', 'value 2']
]
Object.fromEntries(newArray) // { key 1: "value 1", key 2: "value 2"}
2.Map方法

ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。

const map = new Map([
  ['key 1', 'value 1'],
  ['key 2', 'value 2']
])
// 或者我们可以使用实例方法 set
const map = new Map()
map.set('key 1', 'value 1')
map.set('key 2', 'value 2')

Object.fromEntries(map) // { key 1: "value 1", key 2: "value 2"}
 3.Reduce方法
const array = [
  ['key1', 'value1'],
  ['key2', 'value2']
]
//或者
const map = new Map([
  ['key1', 'value1'],
  ['key2', 'value2']
])
//这个方法好用!
function toObject(pairs) {
  return Array.from(pairs).reduce(
    (acc, [key, value]) => Object.assign(acc, { [key]: value }),
    {}
  )
}

toObject(array) // { key1: 'value1', key2: 'value2' }
toObject(map) // { key1: 'value1', key2: 'value2' }
4.forEach
let arr = [{label: '男', value: 0},{label: '女', value: 1}]

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

const obj1 = arrToObj(arr)
console.log(obj1)  //{0:'男',1:'女'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值