慕课网深入浅出javascript
来源:互联网 发布:阿里算法工程师p6待遇 编辑:程序博客网 时间:2024/06/11 11:02
请在index.html文件中,编写arraysSimilar函数,实现判断传入的两个数组是否相似。具体需求:
1. 数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。
2. 数组的长度一致。
3. 类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window.
1. 数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。
2. 数组的长度一致。
3. 类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window.
当以上全部满足,则返回"判定结果:通过",否则返回"判定结果:不通过"。
function arraysSimilar(arr1, arr2){ if(arr1 instanceof Array && arr2 instanceof Array && arr1.length === arr2.length) { var numInArr1 = 0; var numInArr2 = 0; var booleanInArr1 = 0; var booleanInArr2 = 0; var funInArr1 = 0; var funInArr2 = 0; var undefinedInArr1 = 0; var undefinedInArr2 = 0; var stringInArr1 = 0; var stringInArr2 = 0; var nullInArr1 = 0; var nullInArr2 = 0; var dateInArr1 = 0; var dateInArr2 = 0; var windowInArr1 = 0; var windowInArr2 = 0; for (var i = 0; i < arr1.length; i++) { if(typeof arr1[i] === 'number' ){ numInArr1 ++; } else if(typeof arr1[i] === 'boolean'){ booleanInArr1 ++; } else if(typeof arr1[i] === 'function'){ funInArr1 ++; } else if(typeof arr1[i] === 'undefined'){ undefinedInArr1 ++; } else if(typeof arr1[i] === 'string'){ stringInArr1 ++; } else if(typeof arr1[i] ==='object'){ if(Object.prototype.toString.apply(arr1[i]) === '[object Null]'){ nullInArr1 ++; } else if(Object.prototype.toString.apply(arr1[i]) === '[object Date]'){ dateInArr1 ++; } else if(Object.prototype.toString.apply(arr1[i]) === '[object global]'){ windowInArr1 ++; } } if(typeof arr2[i] === 'number'){ numInArr2 ++; } else if(typeof arr2[i] === 'boolean'){ booleanInArr2 ++; } else if(typeof arr2[i] === 'function'){ funInArr2 ++; } else if(typeof arr2[i] === 'undefined'){ undefinedInArr2 ++; } else if(typeof arr2[i] === 'string'){ stringInArr2 ++; } else if(typeof arr2[i] ==='object'){ if(Object.prototype.toString.apply(arr2[i]) === '[object Null]'){ nullInArr2 ++; } else if(Object.prototype.toString.apply(arr2[i]) === '[object Date]'){ dateInArr2 ++; } else if(Object.prototype.toString.apply(arr2[i]) === '[object global]'){ windowInArr2 ++; } } } console.log("num---"+numInArr1); console.log("num---"+numInArr2); console.log("boo---"+booleanInArr1); console.log("boo---"+booleanInArr2); console.log("null---"+nullInArr1); console.log("null---"+nullInArr2); console.log("window---"+windowInArr1); console.log("window---"+windowInArr2); console.log("date---"+dateInArr1); console.log("date---"+dateInArr2); console.log("string---"+stringInArr1); console.log("string---"+stringInArr2); console.log("fun---"+funInArr1); console.log("fun---"+funInArr2); console.log("undefined---"+undefinedInArr1); console.log("undefined---"+undefinedInArr2); if(numInArr1 == numInArr2 && booleanInArr1==booleanInArr2 && funInArr1==funInArr2 && undefinedInArr1==undefinedInArr2 && stringInArr1==stringInArr2 && nullInArr1==nullInArr2 && dateInArr1==dateInArr2 && windowInArr1==windowInArr2){ console.log('================================true'); return true; }else{ console.log('================================false'); return false; } } return false;}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
- 慕课网深入浅出javascript
- 深入浅出Javascript
- 深入浅出javascript DOM编程
- 深入浅出JavaScript—ECMAScript
- 深入浅出 JavaScript 中的 this
- 深入浅出JavaScript笔记
- 深入浅出 JavaScript 中的 this
- 深入浅出JavaScript闭包
- 深入浅出 JavaScript 中的 this
- 深入浅出 JavaScript 中的 this
- 《JavaScript深入浅出》学习笔记
- 深入浅出 JavaScript 中的 this
- 20150814 JavaScript深入浅出下
- 深入浅出 JavaScript 中的 this
- JavaScript深入浅出之函数
- 深入浅出 JavaScript 中的 this
- 深入浅出 JavaScript 中的 this
- JavaScript 深入浅出 1 数据类型
- 解决宿主机不能访问虚拟机Centos中的站点
- ACM第一个学期回顾
- 第十周项目4—— 类族的设计(1)
- May'English Learning
- 设计模式-模板方法模式 策略模式
- 慕课网深入浅出javascript
- 黑马程序员_Java(反射)
- JDBC
- load方法和initialize方法
- c函数返回数组
- process terminated with status 255 in codeblocks
- poj2386(dfs)
- VC设置鼠标光标的方式比较
- 第十二周阅读项目(5)