首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何用JavaScript检查两个数组是否相等?

如何用JavaScript检查两个数组是否相等?
EN

Stack Overflow用户
提问于 2010-06-25 14:24:22
回答 11查看 517.4K关注 0票数 336
代码语言:javascript
复制
var a = [1, 2, 3];
var b = [3, 2, 1];
var c = new Array(1, 2, 3);

alert(a == b + "|" + b == c);

demo

如何检查这些数组是否相等,如果它们相等,如何获得返回true的方法?

jQuery为此提供了什么方法吗?

EN

回答 11

Stack Overflow用户

发布于 2013-05-08 17:22:06

这就是你应该做的。请不要使用stringify< >

代码语言:javascript
复制
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;
}
票数 350
EN

Stack Overflow用户

发布于 2013-01-12 07:29:23

对于像数字和字符串这样的原始值,这是一个简单的解决方案:

代码语言:javascript
复制
a = [1,2,3]

b = [3,2,1]

a.sort().toString() == b.sort().toString() 

sort()的调用将确保元素的顺序不重要。toString()调用将创建一个以逗号分隔的字符串,以便可以测试两个字符串是否相等。

票数 73
EN

Stack Overflow用户

发布于 2013-10-21 20:11:26

在JavaScript版本1.6中,它就像这样简单:

代码语言:javascript
复制
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

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3115982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档