var a = [1,2,3]
var b = a.sort();
console.log('a',a,'b',b); // a [1,2,3] b [1,2,3]
console.log(a === b); // true
a = [1,3,2];
console.log(a.sort() === b) // false
console.log('a',a,'b',b); // a [1,2,3] b [1,2,3]
console.log(a === b) // false
我的问题是 - 为什么? [我得到2倍假。] 另外一个 - 原始阵列可能不受影响,可能是一些参数或其他排序功能?
我的意思是:
var a = [1,3,2];
var b = a.SomeOtherSortFn();
console.log('a',a,'b',b); // a [1,3,2] b [1,2,3]
编辑:我的目标不是检查数组是否相等。比较长度,循环通过值 - 没什么大不了的。我的问题是 - 为什么第一个相同的数组在第二个数据中不相同。
我得到了答案,谢谢Arun Ghosh。
答案 0 :(得分:4)
比较两个数组时,如果它们指的是同一个对象,则返回值为true
。不比较数组的值或内容。
答案 1 :(得分:-1)
不太清楚你正在使用哪些数字,但我想你必须使用可选参数compareFunction :(你可以阅读完整指南here)
var arr = [ 40, 1, 5, 200 ];
function comparar ( a, b ){ return a - b; }
arr.sort( comparar ); // [ 1, 5, 40, 200 ]
因为如果你不使用它,你会得到这个:(由unicode排序的数字)
var arr = [ 40, 1, 5, 200 ];
arr.sort(); //[ 1, 200, 40, 5 ]