zoukankan      html  css  js  c++  java
  • 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" }
    
  • 相关阅读:
    发布google在线翻译程序(附源码)
    基于MVP架构设计ASP.Net的应用研究
    发布最新C#3.5开发的ReSharper4.0 for VS2005/2008 注册机
    基于元数据驱动模型架构在ASP.Net的应用研究
    Silverlight整合Asp.net AjAX的技术应用
    在WCF中的异常处理方法
    Windows Server 2008 的十四大最新功能特性技术总结
    微软Asp.Net架构与项目团队管理建设模型分析
    在Biztalk应用中调用程序集的方法
    Visual Studio 2008和ASP.NET 3.5的最新技术探索
  • 原文地址:https://www.cnblogs.com/cckui/p/10576478.html
Copyright © 2011-2022 走看看