【下班后学js】判断传入的两个数组是否相似

 1          /*
 2          * param1 Array
 3          * param2 Array
 4          * return true or false
 5          */
 6         function arraysSimilar(arr1, arr2){
 7             if (arr1 instanceof Array){
 8                 return false;
 9             }
10             if (arr2 instanceof Array){
11                 return false;
12             }
13             if (arr1.length !== arr2.length){
14                 return false;
15             }
16
17             var i = 0,
18                 n = arr1.length,
19                 countMap1 = {},
20                 countMap2 = {},
21                 t1, t2,
22                 TYPES = [‘string‘, ‘boolean‘, ‘number‘,
23                     ‘undefined‘, ‘null‘, ‘function‘,
24                     ‘data‘, ‘window‘];
25
26             for (; i < n; i++){
27                 t1 = typeOf(arr1[i]);
28                 t2 = typeOf(arr2[i]);
29                 if (countMap1[t1]){
30                     countMap1[t1]++;
31                 } else {
32                     countMap1[t1] = 1;
33                 }
34                 if (countMap2[t2]){
35                     countMap2[t2]++;
36                 } else {
37                     countMap2[t2] = 1;
38                 }
39             }
40
41             function typeOf(ele){
42                 var r;
43                 if (ele === null) r = ‘null‘;
44                 else if (ele == window) r = ‘window‘;
45                 else if (ele instanceof Array) r = ‘array‘;
46                 else if (ele instanceof Date) r = ‘date‘;
47                 else r = typeof ele;
48                 return r;
49             }
50
51             for (i = 0, n = TYPES.length; i < n; i++){
52                 if (countMap1[TYPES[i]] !== countMap2[TYPES[i]]){
53                     return false;
54                 }
55             }
56
57             return true;
58         }
时间: 2024-12-03 07:56:29

【下班后学js】判断传入的两个数组是否相似的相关文章

js判断一个元素是否在数组中

1.比较传统的做法: 概述:  indexOf()方法返回给定元素能找在数组中找到的第一个索引值,否则返回-1. var a=["1", "3", "2", "3", "0"]; console.log(a.indexOf ('3'));//1 console.log(a.indexOf (5,'0'));//-1 console.log(a.indexOf ('0'));//4 console.log(a

判断两个数组是否相似

/** * ===================================================== * 请在index.html文件中,编写arraysSimilar函数,实现判断传入的两个数组是否相似.具体需求: * 1. 数组中的成员类型相同,顺序可以不同.例如[1, true] 与 [false, 2]是相似的. * 2. 数组的长度一致. * 3. 类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期

两个数组是否相似

* ===================================================== * 请在index.html文件中,编写arraysSimilar函数,实现判断传入的两个数组是否相似.具体需求: * 1. 数组中的成员类型相同,顺序可以不同.例如[1, true] 与 [false, 2]是相似的. * 2. 数组的长度一致. * 3. 类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, wi

js判断复合数据类型的两种方式(typeof不奏效了)

js判断复合数据类型的两种方式(typeof不奏效了) 博客分类: Web前端-JS语言核心 JavaScript 作者:zccst typeof认为所有的复合数据类型都是"object",没法进一步细分,所以还得用其他方法 先上结论: 1,(arr && typeof(arr) === "object" && arr.constructor === Array) 2,Object.prototype.toString.call(ar

用js正则判断输入的两位字符,第一位是数字16进制的,第二位是I、O、Q、U除外的字母(A到Z)

项目中遇到客户的需求变化,要验证某个数据的正确性,判断输入的两位字符,第一位是数字16进制的,第二位是I.O.Q.U除外的字母(A到Z). 本来对js不熟练,网上参考了一下js正则验证的规则,使用正则表达式完成了这个验证. 1 function check() { 2 var str = document.getElementById("txtEnglishName").value; 3 var reg=/^[0-9a-fA-F][^IOQU]$/; 4 if (str.length!

js判断输入字符串长度(汉字算两个字符,字母数字算一个):例如 要求输入12的字,24个字节

<html> <head> <title>js判断输入字符串长度(汉字算两个字符,字母数字算一个)</title> <style type="text/css"> .pbt { margin-bottom: 10px; } .ie6 .pbt .ftid a, .ie7 .pbt .ftid a { margin-top: 1px; } .cl:after { clear: both; content: ".&quo

js:给定两个数组,如何判断他们的相对应下标的元素类型是一样的

题目: 给Array对象原型上添加一个sameStructureAs方法,该方法接收一个任意类型的参数,要求返回当前数组与传入参数数组(假定是)相对应下标的元素类型是否一致. 假设已经写好了Array.prototype.sameStructureAs ,会有下面的结果: [1,1].sameStructureAs([2,2]) // true [1,[1,1]].sameStructureAs([2,[2,2]]) // true [1,[1]].sameStructureAs([[2],2]

Js获取当前日期时间+日期印证+判断闰年+日期的天数差+日期格式化+JS判断某年某月有多少天

Js获取当前日期时间+日期验证+判断闰年+日期的天数差+日期格式化+JS判断某年某月有多少天 字符串转日期型+Js当前日期时间+日期验证+判断闰年+日期的天数差+日期格式化+日期所在年的第几周 日期时间脚本库方法列表Date.prototype.isLeapYear 判断闰年Date.prototype.Format 日期格式化Date.prototype.DateAdd 日期计算Date.prototype.DateDiff 比较日期差Date.prototype.toString 日期转字符

探讨JS合并两个数组的方法

我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况. 比如: 1 2 var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需求是将两个数组合并成一个.方法如下: 1.concat js的Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果. 1 var c = a.concat(b);//c=[1,2,3,4,5,6] 这里有一个问题,concat方法连接a.b两个数组后,a.b两个数组的数据不变,同时会返回一个新的数组.