zoukankan      html  css  js  c++  java
  • 数组对象互转Object.entries()&&Object.fromEntries()

    使用 Object.fromEntries 将数组转成对象

    Object.fromEntries() 方法把键值对列表转换为一个对象。

    语法:

    Object.fromEntries(iterable);

    iterable:类似 Array 、 Map 或者其它实现了可迭代协议的可迭代对象。

    返回一个新的对象

    let keyArray = [
        ['name','清梦徐徐'],
        ['age','18']
    ]
    
    console.log(Objec.fromEntries(keyArray))
    // {name:'清梦徐徐',age:'18'}
    

    Object.entries()

    Object.entries(obj)方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in循环还会枚举原型链中的属性)。

    let keyObj = {
    	name:'清梦徐徐',
    	age:'18'
    }
    
    console.log(Object.entries(keyObj))
    // [['name','清梦徐徐'],['age','18']]
    
    

    其中Object.entries()与Object.fromEntries()为互逆操作

    使用 Object.fromEntries 将 Map 转成对象

    object.fromEntries()还可以将Map数据类型的数据转为对象

    let map = new Map([['name','清梦徐徐'],['age','18']])
    console.log(map)
    // {"name" => "清梦徐徐", "age" => "18"}
    console.log(Object.fromEntries(map))
    // {name:'清梦徐徐',age:'18'}
    

    Object.entries和Object.fromEntries混合使用-对象到对象的转换

    let age = {p1:18,p2:19,p3:20}
    const result = Object.fromEntries(Object.entries(age).filter(([key,value])=> value > 19))
    console.log(result)
    // {p3: 20}
    

    如果不使Object.fromEntries将数组转为对象,那应该怎么实现?

    let arr = [
     ['name','清梦徐徐'],
     ['age',18]
    ]
    
    function toObject(arr){
       return Array.from(arr).reduce(
       	(acc,[key,value]) => Object.assign(acc,{[key]:value}),	  {}
       )
    }
    
  • 相关阅读:
    PTA 7-9 空心字母金字塔 (10分)【待优化】
    PTA 7-12 交换最小值和最大值 (15分)
    PTA 7-8 分队列 (10分)
    PTA 7-6 计算阶乘和 (10分)
    PTA 7-5 得分计算器 (20分)
    PTA 7-4 有重复的数据 (10分)
    PTA 7-1 数组元素循环右移问题 (20分)
    PTA 7-1 换硬币 (20分)
    PTA 7-6 又来一个上三角数字三角形 (10分)【待完善】
    PTA 7-5 画菱形 (10分)
  • 原文地址:https://www.cnblogs.com/justyouadmin/p/13501412.html
Copyright © 2011-2022 走看看