【问题标题】:javascript function for comparing arrays [duplicate]用于比较数组的javascript函数[重复]
【发布时间】:2012-05-03 00:23:51
【问题描述】:

可能重复:
Using jQuery to compare two arrays

我需要一个 Javascript 或 jQuery 函数来确定一个数组是否包含 所有 另一个数组的值。第二个数组可以有比第一个更多的值。

这应该返回truefalse。例如。

comparing  array1 = [1,2,3]  and  array2 = [1,2]      should return false

comparing  array1 = [1,2,3]  and  array2 = [1,1,2]    should return false

comparing  array1 = [1,2,3]  and  array2 = [3,2,1]    should return true

comparing  array1 = [1,2,3]  and  array2 = [1,2,1,3]  should return true

性能不是问题。谢谢!

【问题讨论】:

标签: javascript jquery arrays comparison


【解决方案1】:

检查第一个数组中的每个元素,看看它是否存在于第二个数组中。

注意。这是纯 javascript,可能是 jQuery 中更简单的方法。

var notFound = false;

for(var i = 0, len = firstArray.length; i < len; i++){
    if(secondArray.indexOf(firstArray[i]) === -1)
    {
         notFound = true;
         break;
    }
}

if(notFound)
{
    ....
}

【讨论】:

  • 我刚刚发现的,对于那些有更多编程技能的人来说可能很明显的是,如果数组中的值是不同的类型,这将返回 false。我必须在创建第二个数组时添加 parseFloat() 转换,以确保两个数组都包含数字。
  • 这篇文章有一些有用的信息,关于 === 的使用以及它会失败的原因。 stackoverflow.com/questions/359494/…我的解决方案纯粹是针对原始 int 类型的,我不能保证它适用于对象、字符串等
【解决方案2】:

更新:阅读问题太快了,只有在相同的顺序下才有效

function same_elements(array1, array2){  
  var result = true; 
  $(array1).each(function(index, value) {
    if (value != array2[index]) {result = false};
  });
  return result;
}

【讨论】:

  • 这不适用于 array1 = [1,2,3] 和 array2 = [1,2,1,3]
  • 是的,刚刚实现了无序的情况
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-20
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-19
相关资源
最近更新 更多