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

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

var a = [1, 2, 3];var b = [3, 2, 1];var c = new Array(1, 2, 3);alert(a == b + "|" + b == c);

演示

如何检查这些数组是否相等,以及如何获得返回true如果他们是平等的?

jQuery提供了这样的方法吗?


幕布斯7119047
浏览 629回答 3
3回答

函数式编程

这就是你该做的。请不要用stringify也不< >.function&nbsp;arraysEqual(a,&nbsp;b)&nbsp;{ &nbsp;&nbsp;if&nbsp;(a&nbsp;===&nbsp;b)&nbsp;return&nbsp;true; &nbsp;&nbsp;if&nbsp;(a&nbsp;==&nbsp;null&nbsp;||&nbsp;b&nbsp;==&nbsp;null)&nbsp;return&nbsp;false; &nbsp;&nbsp;if&nbsp;(a.length&nbsp;!=&nbsp;b.length)&nbsp;return&nbsp;false; &nbsp;&nbsp;//&nbsp;If&nbsp;you&nbsp;don't&nbsp;care&nbsp;about&nbsp;the&nbsp;order&nbsp;of&nbsp;the&nbsp;elements&nbsp;inside &nbsp;&nbsp;//&nbsp;the&nbsp;array,&nbsp;you&nbsp;should&nbsp;sort&nbsp;both&nbsp;arrays&nbsp;here. &nbsp;&nbsp;//&nbsp;Please&nbsp;note&nbsp;that&nbsp;calling&nbsp;sort&nbsp;on&nbsp;an&nbsp;array&nbsp;will&nbsp;modify&nbsp;that&nbsp;array. &nbsp;&nbsp;//&nbsp;you&nbsp;might&nbsp;want&nbsp;to&nbsp;clone&nbsp;your&nbsp;array&nbsp;first. &nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;a.length;&nbsp;++i)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(a[i]&nbsp;!==&nbsp;b[i])&nbsp;return&nbsp;false; &nbsp;&nbsp;} &nbsp;&nbsp;return&nbsp;true;}

MYYA

jQuery没有比较数组的方法。但是下划线库(或类似的Lodash库)确实有这样一种方法:等等,它还可以处理其他各种情况(如对象文本)。为了坚持所提供的例子:var&nbsp;a=[1,2,3];var&nbsp;b=[3,2,1];var&nbsp;c=new&nbsp;Array(1,2,3);alert(_.isEqual(a,&nbsp;b)&nbsp;+&nbsp;"|"&nbsp;+&nbsp;_.isEqual(b,&nbsp;c));顺便说一句:下划线还有很多jQuery也缺少的方法,所以它是jQuery的一个很好的补充。编辑:正如注释中所指出的,只有当两个数组的元素以相同的顺序排列时,上面的内容才能工作,即:_.isEqual([1,2,3],&nbsp;[1,2,3]);&nbsp;//&nbsp;true_.isEqual([1,2,3],&nbsp;[3,2,1]);&nbsp;//&nbsp;false幸运的是,Javascript有一个解决这个问题的内置方法,sort:_.isEqual([1,2,3].sort(),&nbsp;[3,2,1].sort());&nbsp;//&nbsp;true
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript