编写arraysSimilar函数,实现判断传入的两个数组是否相似。具体需求:
1. 数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。
2. 数组的长度一致。
3. 类型的判断范围,需要区分: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 ; } // 创建函数判断数组元素类型 function type_element ( ele ) { if ( ele === null ) { return "null" ; } else if ( ele === window ) { return "window" ; } else if ( ele instanceof Date ) { return "Date" ; } else if ( ele instanceof Array ) { return "Array" ; } else return typeof ( ele ) ; } var e_arr1 = [ ] ; var e_arr2 = [ ] ; for ( var i = 0 ; i < arr1 . length ; i ++ ) { e_arr1 . push ( type_element ( arr1 [ i ])) ; e_arr2 . push ( type_element ( arr2 [ i ])) ; } var a1 = e_arr1 . sort ( ) ; var a2 = e_arr2 . sort ( ) ; for ( var i = 0 ; i < arr1 . length ; i ++ ) { if ( a1 [ i ] != a2 [ i ]) { return false ; } } return true ; }