Javascript 将数组与jQuery进行比较

Javascript 将数组与jQuery进行比较,javascript,jquery,html,arrays,compare,Javascript,Jquery,Html,Arrays,Compare,可能的重复项: 有三个阵列: var items = Array(523,3452,334,31,5346); var items_used = Array(3452,31,4123); var items_new = Array(); 第一个是一般性的,第二个是目前使用的物品。第三个包含第一个数组中的所有项目,第二个数组中没有提到这些项目 如何从第一个数组中删除第二个数组中使用的项目,并将结果写入第三个数组 我们应该得到items\u new=Array(523345346)3452和3

可能的重复项:

有三个阵列:

var items = Array(523,3452,334,31,5346);
var items_used = Array(3452,31,4123);
var items_new = Array();
第一个是一般性的,第二个是目前使用的物品。第三个包含第一个数组中的所有项目,第二个数组中没有提到这些项目

如何从第一个数组中删除第二个数组中使用的项目,并将结果写入第三个数组


我们应该得到
items\u new=Array(523345346)
3452和
31被删除,因为它们在第二个数组中被提到。

为什么不是一个简单的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]);
}
for(var j=0;j
基本上,我会让第三个数组在第一个数组中包含所有元素,然后在第二个数组中循环删除第一个数组中找到的所有元素

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);
}
var项目\u比较=项目;
对于(int i=0;i
您可以这样做:

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);
    });
var项=数组(5233452334,315346);
使用的var项目=数组(3452,314123);
var items_compared=Array();
$。每个(项目、功能(i、val){
如果($.inArray(val,使用的项目)<0)
项目推送(val);
});

就这样

作为更快的解决方案,可能:

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);
   }
}
var j,itemsHash={};
对于(j=0;j

运行时间为O(n),内存稍微多一点。

很有趣。试过了,但对我不起作用。可能是标点错误吧?我测试过了,效果很好。您确定包含jquery吗?您没有要求快速。你只是要求一个解决方案。