JS要比较两个数组是否有相同的元素,即两个数组所有元素都相同,但元素的顺序不一定一致。只就需要先将数组进行排序,再比较两个数组是否相等。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>js 检测两个数组是否相似</title></head><body><script>//数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。 //数组的长度一致。//类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window.function arraysSimilar(arr1, arr2){//判断边界if (!(arr1 instanceof Array) || !(arr2 instanceof Array)) {return false;}//判断长度if (arr1.length != arr2.length) return false;var i = 0, n = arr1.length, countMap1 = {}, countMap2 = {}, t1, t2, TYPES = ["string", "boolean", "number", "undefined", null, "function", "date", "window"];for ( ; i < n; i++) {t1 = typeOf(arr1[i]);t2 = typeOf(arr2[i]);if (countMap1[t1]) {countMap1[t1] ++;}else{countMap1[t1] = 1;}if (countMap2[t2]) {countMap2[t2] ++;}else{countMap2[t2] = 1;}}function typeOf(ele){var r;if (ele === null) r = "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;}for (i = 0; i < TYPES.length; i++) {if (countMap1[TYPES[i]] != countMap2[TYPES[i]]) return false;}return true;}document.write(arraysSimilar([1,true], [false, 2]));</script></body></html>以上所述就是本文的全部内容了,希望大家能够喜欢。