• js 对象与数组相互转化的快捷方法 Object.keys()、Object.values()、Object.entries()


    Object.keys()

    Object.keys 返回一个所有元素为字符串的数组,其元素来自于从给定的object上面可直接枚举的属性。这些属性的顺序与手动遍历该对象属性时的一致。

    例如:

    let obj = {
        name: 'haha', 
        age: 20,
        showName:  function () {}
    }
    Object.keys(obj)   //['name','age','showName']
    

    处理数组时,返回数组各元素的索引值:

    let arr = ['a', 'b', 'c'];
    Object.keys(arr); // ['0', '1', '2']
    
    let brr = [1, 3, 4];
    Object.keys(brr); // ['0', '1', '2']
    
    

    可自动排序:

    let arr = { 100: 'a', 2: 'b', 7: 'c' };
    console.log(Object.keys(arr)); // console: ['2', '7', '100']
    

    组合用法:

    let obj = {
        name: 'haha', 
        age: 20, 
    }
    
    Object.keys(obj).map((val, index)=>{
      obj[val] // 可以针对obj的不同属性做不同处理
    }) 
    

    Object.values()

    Object.values()方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。

    例如:

    let obj = {
        name: 'haha', 
        age: 20,
        showName:  function () {}
    }
    Object.values(obj)   //['haha','20', f]
    
    let brr = [1, 3, 4];
    Object.values(brr); // [1, 3, 4]
    

    排序:

    let an_obj = { 100: 'a', 2: 'b', 7: 'c' };
    console.log(Object.values(an_obj)); // ['b', 'c', 'a']
    

    字符串:

    console.log(Object.values('haha')); // ['h', 'a', 'h', 'a']
    

    Object.entries()

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

    const obj = { foo: 'bar', baz: 42 };
    console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]
    
    const anObj = { 100: 'a', 2: 'b', 7: 'c' };
    console.log(Object.entries(anObj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]
    

    非对象会被强制转为对象:

    console.log(Object.entries('foo')); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]
    

    更优雅的遍历对象键值:

    const obj = { a: 5, b: 7, c: 9 };
    for (const [key, value] of Object.entries(obj)) {
      console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
    }
    
    
    // 或者
    Object.entries(obj).forEach(([key, value]) => {
    console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
    });
    

    Object.fromEntries()

    Object.fromEntries() 把键值对列表转换为一个对象。改方法为ES10方法, Chrome不支持

    const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];
    const obj = Object.fromEntries(arr);
    console.log(obj); // { 0: "a", 1: "b", 2: "c" }
    
  • 相关阅读:
    ASP.NET中几种加密方法
    Linux Mint17.1安装PHPStorm8.0.2
    HTTP 错误 500.23
    Kali Linux 下安装配置MongoDB数据库 ubuntu 下安装配置MongoDB源码安装数据库
    如何在Ubuntu 18.04 LTS上安装和配置MongoDB
    scrapy 如何链接有密码的redis scrapy-redis 设置redis 密码 scrapy-redis如何为redis配置密码
    Redis报错:DENIED Redis is running in protected mode
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
    用mingw32编译ffmpeg2.7
    VS2005编译QT4.8.2
  • 原文地址:https://www.cnblogs.com/cckui/p/10576478.html
Copyright © 2020-2023  润新知