zoukankan      html  css  js  c++  java
  • es6 Array.form将类数组或者对象转化为数组

    Array.from()方法就是将一个[类数组对象][或者可遍历对象]转换成一个[真正的数组]

    那么什么是类数组对象呢?所谓类数组对象,最基本的要求就是具有length属性的对象。

           let arrayLike = {
                0: 'll',
                1: '60',
                2: '男',
                3: ['重庆', '四川'],
                'length': 4
            }
            let arr = Array.from(arrayLike);
            console.log(arr);
    

    ===================
    如果没有length:4,那么就会转成一个空数组

     let arrayLike = {
                0: 'll',
                1: '60',
                2: '男',
                3: ['重庆', '四川'],
            }
            let arr = Array.from(arrayLike);
            console.log(arr);  返回[]
    

    对象的属性名必须为数值型或字符串型

     let arrayLike = {
                bname: 'll',
                asa: '60',
                bb: '男',
                cc: ['重庆', '四川'],
                length: 4
            }
            let arr = Array.from(arrayLike);
            console.log(arr);    [undefined, undefined, undefined, undefined]
    
    看下面这个例子
     let objarrLiske = {
                2: "张三",
                length: 3
    }
    let arr = Array.from(objarrLiske);
    console.log(arr); //[undefined,undefined,'张三'];
    //  上面显示类数组的长度是3,但是只有一个值。
    //  则内容没有那么长,使用undefined来填充
    
    ===============
     let arr2 = {
          2: "张三",
          length: 3
      };
    
      let arr3 = Array.prototype.slice.call(arr2);
      console.log(arr3);        console.log(arr3);//[ 2:"张三"]
      不同的浏览器显示的内容还不一样
      
    
    我忘记call这个改变this指向的方法了

    另外

    由此可见,要将一个类数组对象转换为一个真正的数组,必须具备以下条件:
    
      1、该类数组对象必须具有length属性,用于指定数组的长度。如果没有length属性,那么转换后的数组是一个空数组。上面已经验证了  ok
    
      2、该类数组对象的属性名必须为数值型或字符串型
    
       3、 如果内容小于(《 )length;则使用underfined进行填充
    
    

    如何使用其他的方法将一个对象转为数组 for in
    for in 循环空对象或者数组 是不会报错的哈

         // 将对象变为数组
            let arrayLike = {
                bname: 'll',
                asa: '60',
                bb: '男'
            }
            let newarr = [];
            for (let i in arrayLike) {
                newarr.push(arrayLike[i])
            }
            console.log(newarr); ["ll", "60", "男"]
    
  • 相关阅读:
    面试官:反射都不会,还敢说自己会Java?
    nginx 开启x-forward
    不写代码,从0到1教你制作炫酷可视化大屏
    5G 专网部署方案
    Mac运行pygame一直显示空白屏幕
    数据库大咖解读“新基建”,墨天轮四重好礼相送!
    Oracle 20c 新特性:自动的区域图
    4000多人全靠报表自动化,效率提高60%,这套数据平台方法论真强
    EBS开发性能优化之查找需要优化的程序
    EBS开发性能优化之SQL语句优化
  • 原文地址:https://www.cnblogs.com/IwishIcould/p/12996692.html
Copyright © 2011-2022 走看看