美文网首页
js深入浅出-练习1(数据类型)

js深入浅出-练习1(数据类型)

作者: 猫晓封浪 | 来源:发表于2018-09-29 22:47 被阅读0次

数据类型练习题

需求:写一个函数,实现判断传入的两个数组是否相似
  • 数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。
  • 数组的长度一致。
  • 类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window。
思路:

首先判断传入的参数是否都为数组,如果有一个不是就返回false。在其次就是判断两个数组长度是否一致,且长度都不为0。定义两个新数组 arr3 arr4 ,循环遍历 arr1 arr2 判断其每个元素的数据类型(这里选择 Object.prototype.toString.call(item) 原因是更具体,适应很多类型,如null undefined)并存入新数组3和4中,再接着遍历新数组 arr3 中元素,判断该元素在新数组 arr4 中是否存在,如若存在就删除新数组 arr4 中对应的元素。最后判断新数组 arr4 的数组长度,为 0 返回 true 说明两数组相似,不为 0 返回 false ,说明两数组不相似。

代码:
function arraysSimilar(arr1, arr2){
    if(Array.isArray(arr1)===false||Array.isArray(arr2)===false){
        return false //判断两个参数是否都为数组
    }else if(arr1.length===arr2.length&&arr1.length!==0){//判断两数组长度是否相同
    //使用Object.prototype.toString.call(item)方法判断数据类型
        var arr3=arr1.map(function(item){return Object.prototype.toString.call(item)})
        var arr4=arr2.map(function(item){return Object.prototype.toString.call(item)})
        for(var i=0;i<arr3.length;i++){
//外侧循环arr3(控制判断轮数),内侧循环arr4(控制判断次数)
            for(var j=0;j<arr4.length;j++){
                if(arr3[i]===arr4[j]){
                    arr4.splice(j,1)//数组的splice()方法;索引,操作个数
                }
            }
        }
        if(arr4.length===0){return true}
          else{return false}
    }
}
判断数据类型方式的选择

typeof:适合基本类型和 function 的检测,遇到null失效( typeof(null) 返回 Object
[[Class]]:通过 {}.toString 得到,适合内置对象和基本类型,遇到null和undefined失效(IE678返回 [[onject Object]]
instanceof:适合自定义对象,也可以用来检测原生对象,判断其是否属于某种类型,在不同iframe和window间检测时失效
Object.prototype.toString.call(item):属于全能类型

相关文章

  • js深入浅出-练习1(数据类型)

    数据类型练习题 需求:写一个函数,实现判断传入的两个数组是否相似 数组中的成员类型相同,顺序可以不同。例如[1, ...

  • 2022前端面试题汇总(附答案)更新中

    JS相关 1.JS中的数据类型 (1)数据类型分为基本数据类型和引用数据类型基本数据类型:number、null、...

  • JavaScript深入浅出第3课:什么是垃圾回收算法?

    摘要: JS是如何回收内存的? 《JavaScript深入浅出》系列: JavaScript深入浅出第1课:箭头函...

  • JavaScript面向对象前置知识

    1、JS的组成 ECMAScript、DOM、BOM 2、JS基本数据类型和复杂数据类型 基本数据类型 strin...

  • JS题集

    1.JS有哪些数据类型? JS有七大数据类型: String, Symbel, Number, Boolean, ...

  • JS 面试题汇总

    说一下JS 中的数据类型有哪些 JS 数据类型包括 基本 / 引用 / 特殊 数据类型: 1.基本数据类型:Str...

  • JS的基本小结

    JS基本输出方式 JS数据类型 变量 常量 变量常量小练习 声明提前 隐式转换 显示转换/强制转换

  • js重点面试题

    1.js中有哪些数据类型,并解释清楚原始数据类型和引用数据类型 js中共有null , undefined , s...

  • JS深浅拷贝

    JS存储方式 JS中存在基本数据类型和引用数据类型1.基本数据类型:number,string,boolean,n...

  • js面试题

    1、js 数据类型 基本数据类型 引用数据类型 2、js 变量和函数声明的提升 在js中变量和函数的声明会提升到最...

网友评论

      本文标题:js深入浅出-练习1(数据类型)

      本文链接:https://www.haomeiwen.com/subject/cqfioftx.html