使用条件for循环更新数组-Javascript

使用条件for循环更新数组-Javascript,javascript,arrays,for-loop,underscore.js,Javascript,Arrays,For Loop,Underscore.js,我有两个数组,其中包含不同类型的复杂对象。如果每个数组的对象之间存在特定的值匹配,那么我需要从其中一个匹配对象中获取一些值并保存它。如果保存了匹配对象中的几个键值对,则需要将其从其数组中删除,以便不会多次保存 以下是我最大的努力(到目前为止,展示了我正在尝试做的一个例子) 我想根据下面的代码更新我的空数组。这是一个简单的例子来说明一个更复杂的问题,我认为这可能比剪切和粘贴几十行代码更好。这个问题与每次通过外部循环时在emptyArray和filtering array2中收集值有关。以下划线开头

我有两个数组,其中包含不同类型的复杂对象。如果每个数组的对象之间存在特定的值匹配,那么我需要从其中一个匹配对象中获取一些值并保存它。如果保存了匹配对象中的几个键值对,则需要将其从其数组中删除,以便不会多次保存

以下是我最大的努力(到目前为止,展示了我正在尝试做的一个例子)

我想根据下面的代码更新我的空数组。这是一个简单的例子来说明一个更复杂的问题,我认为这可能比剪切和粘贴几十行代码更好。这个问题与每次通过外部循环时在emptyArray和filtering array2中收集值有关。以下划线开头的建议没有帮助

var array = [1, 2, 3, 4, 1, 2, 3, 4];
var array2 = [2, 4, 6, 8, 10];
var emptyArray = [];
for (i = 0; i < array.length; i++){
     var something = array[i];
     var array2 = _.without(array2, emptyArray);
     for (a = 0; a < array2.length; a++){
         var value = array2[a];
          if(something === value){
              emptyArray.push(value);
              break;
          }
     }
}
var数组=[1,2,3,4,1,2,3,4];
var array2=[2,4,6,8,10];
var emptyArray=[];
对于(i=0;i
我想根据if语句更新array2中的值,以便这些值不会在嵌套循环中重复。相反,my emptyArray保持为空,而不是从array2添加值,因为array2的元素等于数组的元素

需要明确的是,现在emptyArray仍然是空的,从不过滤阵列2。 我希望在外循环第二次迭代开始时看到空数组收集值2,然后在外循环第四次迭代开始时看到空数组收集值4


当这些值成为emptyArray的一部分时,我想从array2中过滤它们,这样它们就不会在外循环的第6次和第8次迭代中触发if语句。我设想,当循环完成时,emptyArray=[2,4]和array2=[6,8,10]。

由于您已经在使用下划线,这可能会简单得多

emptyArray = _.intersection(array, array2)
array2 = _.difference(array2, emptyArray)

函数
\如果没有
,则不将数组作为第二个参数,而是将单个项移除。e、 g
\无(ar1,1,2,3)

如果您需要传递数组,请使用
..difference(ar1,ar2)

如果您要给我一个负号,请至少说明原因?如果您提供了可能有帮助的预期输出示例,也许可以。例如,我不知道该代码如何工作,因为
数组中没有可循环的元素。谢谢!我现在就更新!好的,你想把
array
array2
中的公共项移动到
emptyArray
中。实际上,代码比这复杂一点,但我试图创建一个简单的示例来说明我的问题。我需要收集emptyArray中的值并保存它们以进行更新,如示例所示。再次感谢您就此回复我。正如我上面提到的,代码更复杂,所以它实际上不可能比上面显示的代码简单。这是一个在循环时向数组中添加值的问题,这使得问题变得更加棘手,因为它会在循环迭代时更改循环的长度。