JavaScript算法——数组扁平化

数组扁平化

    var arr=[1,[2,[3,3],2],1]
    function flat(arr){
        var newArr=[]
        for(var i=0;i<arr.length;i++){
            //判断数据类型
            if(Object.prototype.toString.call(arr[i])=='[object Array]'){
                //扩展运算符作用: 1.将元素序列合成数组 2.将数组展开变为序列
                newArr.push(...flat(arr[i]))
            }else{
                newArr.push(arr[i])
            }
        }
        return newArr
    }
    console.log(flat(arr))

判断数据类型的四种方法(扩展):

JavaScript基本数据类型:Number String Null Undefined Boolean Symbol
引用数据类型:Object ( Function 、Array、RegExp、Date)

1.typeof
对于基本类型,除 null 以外,均可以返回正确的结果。
对于引用类型,除 function 以外,一律返回 object 类型。

2.instanceof
表达式:A instanceof B 判断A是否为B的实例,若是,返回true;若不是,返回false
只能用来判断两个对象之间的实例关系,无法准确判断数据类型

3.constructor
原理:函数定义后,JS引擎为其添加prototype原型对象,然后在prototype上添加属性constructor,指向函数的引用
当执行 var f = new F() 时,F 被当成了构造函数,f 是F的实例对象,此时 F 原型上的 constructor 传递到了 f 上,因此 f.constructor == F
null和 undefined无法判断数据类型
不稳定,被重写之后发生变化

4.toString(准确)
Object.prototype.toString.call()/Object.prototype.toString.apply()

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页