在 JavaScript 中比较两个数字数组的最简单方法
正确算法
对于字符串,我们可以直接使用==或===来判断它们是否相同,但不能用它们来判断两个数组是否相似,或者说它们是否包含相同的元素。
所以这种方法行不通。
const array1 = [1, 2, 3, 4, 5]
const array2 = [1, 2, 3, 4, 5]
console.log(array1 == array2) //false
但是如果我们把数组转换成字符串呢?这样就可以使用比较运算符了。这会让任务变得非常简单。我们可以使用`toString`方法对数组进行排序,例如:array1.toString()或者我们可以使用这个技巧。
console.log([1, 2, 3, 4, 5] + "")
//logs 1,2,3,4,5
console.log(typeof ([1, 2, 3, 4, 5] + ""))
//logs string
所以,如果我们尝试将字符串(本例中为空字符串)连接到数组,数组就会被转换成字符串。
这样,我们就可以简单地将数组当作字符串来使用,并进行比较。
const array1 = [1, 2, 3, 4, 5]
const array2 = [1, 2, 3, 4, 5]
console.log(array1 + "" == array2 + "") //true
另外,如果你想让它处理元素顺序混乱的数组,可以先对数组进行排序。我们来为此创建一个实用函数。
function compareArr(arr1, arr2){
arr1.sort()
arr2.sort()
return arr1 + "" == arr2 + ""
}
const array1 = [1, 2, 3, 4, 5]
const array2 = [1, 5, 2, 4, 3]
console.log(compareArr(array1, array2)) // returns true