为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

幕布斯7119047 2019-06-23 14:32:10
如何检查两个数组是否与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提供了这样的方法吗?
查看完整描述

3 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

这就是你该做的。请不要用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;}


查看完整回答
反对 回复 2019-06-23
?
MYYA

TA贡献1868条经验 获得超4个赞

jQuery没有比较数组的方法。但是下划线库(或类似的Lodash库)确实有这样一种方法:等等,它还可以处理其他各种情况(如对象文本)。为了坚持所提供的例子:

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

顺便说一句:下划线还有很多jQuery也缺少的方法,所以它是jQuery的一个很好的补充。

编辑:正如注释中所指出的,只有当两个数组的元素以相同的顺序排列时,上面的内容才能工作,即:

_.isEqual([1,2,3], [1,2,3]); // true_.isEqual([1,2,3], [3,2,1]); // false

幸运的是,Javascript有一个解决这个问题的内置方法,sort:

_.isEqual([1,2,3].sort(), [3,2,1].sort()); // true


查看完整回答
反对 回复 2019-06-23
  • 3 回答
  • 0 关注
  • 628 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信