【问题标题】:Compare arrays with jQuery [duplicate]用jQuery比较数组[重复]
【发布时间】:2011-08-20 10:51:57
【问题描述】:

可能的重复:
Simplest code for array intersection in javascript
How to merge two arrays in Javascript

共有三个数组:

var items = Array(523,3452,334,31,5346);
var items_used = Array(3452,31,4123);
var items_new = Array();

第一个是通用的,第二个是当前使用的项目。第三个包含第一个数组中的所有项目,第二个没有提到女巫。

如何从第一个数组中删除,第二个使用女巫,并将结果写入第三个数组?

我们应该得到items_new = Array(523, 334, 5346)345231 被删除,因为它们在第二个数组中被提及。

【问题讨论】:

    标签: javascript jquery html arrays compare


    【解决方案1】:

    你可以这样做:

    var items = Array(523,3452,334,31,5346);
    var items_used = Array(3452,31,4123);
    var items_compared = Array();
    
        $.each(items, function(i, val){
          if($.inArray(val, items_used) < 0)
              items_compared.push(val);
        });
    

    就是这样

    【讨论】:

    • 有趣。试过了,但对我不起作用。可能是一些标点错误?
    • 我测试了它并且工作正常。你确定你包含了 jquery 吗?
    【解决方案2】:

    为什么不是一个简单的 for 循环?

    for(var j = 0; j < items.length; j++)
    {
        var found = false;
        for(var k = 0; k < items_used.length; k++)
        {
           if(items_used[k] == items[j])
           {
               found = true;
               break;
           }
        }
    
        if(!found)
           items_compared.push(items[j]);
    }
    

    【讨论】:

    • 你没有要求快。您只是要求解决方案。
    【解决方案3】:

    也许是一个更快的解决方案:

    var j, itemsHash = {};
    for (j = 0; j < items.length; j++) {
      itemsHash[items[j]] = true;
    }
    for (j = 0; j < itemsUsed.length; j++) {
      itemsHash[itemsUsed[j]] = false;
    }
    for (j in itemsHash) {
       if (itemsHash[j]) {
         itemsCompared.push(j);
       }
    }
    

    在 O(n) 时间内运行,内存稍多。

    【讨论】:

      【解决方案4】:

      基本上我会让第三个包含第一个中的所有元素,然后循环遍历第二个数组,删除第一个中找到的所有元素。

      var items_compared = items;
      for(int i = 0; i < items_used.length; ++i)
      {
          var indx = $.inArray(items_used[i], items_compared);
          if(indx != -1)
              items_compared.splice(indx, 1);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-02
        相关资源
        最近更新 更多