var a = [1, 2, 3];
var b = [3, 2, 1];
var c = new Array(1, 2, 3);
alert(a == b + "|" + b == c);
如何检查这些数组是否相等,如果它们相等,如何获得返回true
的方法?
jQuery为此提供了什么方法吗?
发布于 2013-05-08 17:22:06
这就是你应该做的。请不要使用stringify
或< >
。
function arraysEqual(a, b) {
if (a === b) return true;
if (a == null || b == null) return false;
if (a.length !== b.length) return false;
// If you don't care about the order of the elements inside
// the array, you should sort both arrays here.
// Please note that calling sort on an array will modify that array.
// you might want to clone your array first.
for (var i = 0; i < a.length; ++i) {
if (a[i] !== b[i]) return false;
}
return true;
}
发布于 2013-01-12 07:29:23
对于像数字和字符串这样的原始值,这是一个简单的解决方案:
a = [1,2,3]
b = [3,2,1]
a.sort().toString() == b.sort().toString()
对sort()
的调用将确保元素的顺序不重要。toString()
调用将创建一个以逗号分隔的字符串,以便可以测试两个字符串是否相等。
发布于 2013-10-21 20:11:26
在JavaScript版本1.6中,它就像这样简单:
Array.prototype.equals = function( array ) {
return this.length == array.length &&
this.every( function(this_i,i) { return this_i == array[i] } )
}
例如,[].equals([])
产生true
,而[1,2,3].equals( [1,3,2] )
产生false
。
https://stackoverflow.com/questions/3115982
复制相似问题