相同元素不同顺序的数组,排序后竟然不想等

let a_arr = [1,2]
let b_arr = [2,1]
a_arr.sort()
b_arr.sort()

console.log(a_arr==b_arr)
console.log(a_arr)
console.log(b_arr)

结果

所以怎么让他返回true呢,除了JSON.stringify() 还有别的方法么

阅读 3.2k
6 个回答

不是一个数组 永远不会相等的

本来就是不相等的,object、arr比较的都是内存地址

如二楼的仁兄说的,在 js 里除了原始值都是对象,对象比较的时候用的是指向对象的内存地址,只有同一个对象内存地址才会相同。

因为非简单类型的数据,比较的的都是内存地址。
看两个例子

var a = [1,2]; // a申请了一块地址
var b = a; // 此时b指向了a的地址
a === b // true
var a = [1,2]; // a申请了一块地址
var b = [1, 2]; // b又申请了一块地址
a === b // false 因为是两个不同的地址

数组比较的是内存地址,比如

var arr1 = [1,2,3]
var arr2 = arr1;
console.log(arr1 == arr2) //true
arr2[0] = 10;
console.log(arr1 == arr2) //true
console.log(arr1) // 10,2,3
console.log(arr2) // 10,2,3

你是新手吧 这是很基本的js概念 数组array是比较内存地址 数据内容相同但是地址引用不同

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题