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" }
    
  • 相关阅读:
    暂停公告
    【laravel】Laravel 5 TokenMismatchException on PHP 5.6.9
    【laravel】laravel class 里面定义以head开头的方法会报错
    【kindle】【转发】kindle链接WIFI自动断开问题
    【js】window.onscroll 无效问题
    【js】【转发】jreturn;、return true、return false;区别
    【js】【vue】获取当前dom层
    【js】input 焦点到内容的最后
    【jquery】 选中复选框 和 return false 的影响
    【jquery】 form ajaxSubmit 问题
  • 原文地址:https://www.cnblogs.com/cckui/p/10576478.html
Copyright © 2011-2022 走看看