javascript----类型测试示例

来源:互联网 发布:iphone软件 编辑:程序博客网 时间:2024/05/03 01:53

判断两个数组是否相同
1. 数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。

  1. 数组的长度一致。

  2. 类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window.

<!DOCTYPE HTML><html><head>    <meta http-equiv="Content-Type" content="text/html; charset=gb18030">    <title>Untitled Document</title></head><body>    <script type="text/javascript">           /*         * param1 Array          * param2 Array         * return true or false         */        if(!(arr1 instanceof Array) || !(arr2 instanceof Array) return false;        if(arr1.length != arr2.length) return false;        function arraysSimilar(arr1, arr2){            function typeOf(ele){                var r;                if(ele === null) return "null";                else if(ele instanceof Array) r = "array";                else if(ele === window) r = "window";                else if(ele instanceof Date) r = "date"                else r = typeof(ele);                return r;            }            var i,            map1 = {},            map2 = {},            t1,t2,            n = arr1.length;            var type=['null','array','window','date','undefinded','number','string','boolean','function'];            for(;i<n;i++) {                t1=typeOf(arr1[i]);                t2=typeOf(arr2[i]);                if(map1[t1]) map1[t1]++;                else map1[t1]=1;                if(map2[t2]) map2[t2]++;                else map2[t2]=1;            }            i=0;            for(;i<type.length;i++) {                if(map1[i] != map2[i])                   return false;            }        }    </script>    <script src="testData.js"></script></body></html>

testData.js:(转自慕课网)

var result=function(){    //以下为多组测试数据            var cases=[{                    arr1:[1,true,null],                    arr2:[null,false,100],                    expect:true                },{                    arr1:[function(){},100],                    arr2:[100,{}],                    expect:false                },{                    arr1:[null,999],                    arr2:[{},444],                    expect:false                },{                    arr1:[window,1,true,new Date(),"hahaha",(function(){}),undefined],                    arr2:[undefined,(function(){}),"okokok",new Date(),false,2,window],                    expect:true                },{                    arr1:[new Date()],                    arr2:[{}],                    expect:false                },{                    arr1:[window],                    arr2:[{}],                    expect:false                },{                    arr1:[undefined,1],                    arr2:[null,2],                    expect:false                },{                    arr1:[new Object,new Object,new Object],                    arr2:[{},{},null],                    expect:false                },{                    arr1:null,                    arr2:null,                    expect:false                },{                    arr1:[],                    arr2:undefined,                    expect:false                },{                    arr1:"abc",                    arr2:"cba",                    expect:false                }];    //使用for循环, 通过arraysSimilar函数验证以上数据是否相似,如相似显示“通过”,否则"不通过",所以大家要完成arraysSimilar函数,具体要求,详见任务要求。                for(var i=0;i<cases.length;i++){                if(arraysSimilar(cases[i].arr1,cases[i].arr2)!==cases[i].expect) {                    document.write("不通过!case"+(i+1)+"不正确!arr1="+JSON.stringify(cases[i].arr1)+", arr2="+JSON.stringify(cases[i].arr2)+" 的判断结果不是"+cases[i].expect);                    return false;                }                            }            return true;        }();    document.write("判定结果:"+(result?"通过":"不通过"));
0 0
原创粉丝点击