使用条件for循环更新数组-Javascript
Updating an array with a conditional for loop - Javascript
我有两个数组,它们具有不同类型的复杂对象。如果每个数组的对象之间有一定的值匹配,那么我需要从其中一个匹配对象中提取一些值并保存它。如果保存了匹配对象中的几个键值对,那么就需要将其从数组中删除,这样它就不会保存多次。
以下是我最大的努力(到目前为止,我展示了一个我正在努力做的事情的例子)。
我想根据下面的代码更新我的空数组。这是一个简单的例子来说明一个更复杂的问题,我认为这可能是比剪切和粘贴几十行代码更好的方法。这个问题与在每次传递外循环期间收集emptyArray中的值和过滤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;
}
}
}
我想根据if语句更新array2中的值,这样这些值就不会在嵌套循环中重复。相反,我的emptyArray保持为空,而不是添加来自array2的值,因为array2的元素等于数组的元素。
需要明确的是,现在emptyArray保持为空,并且从不过滤array2。我希望在外循环的第二次迭代开始时看到空数组收集值2,然后在外循环第四次迭代开始处看到emptyArray收集值4。
我想从array2中过滤这些值中的每一个,因为它们成为emptyArray的一部分,这样它们就不会在外循环的第6次和第8次迭代中触发if语句。我想象当循环结束时,emptyArray=[2,4],array2=[6,8,10]。
函数_.without
不接受数组作为第二个参数,它接受要删除的单个项。例如_.without(ar1,1,2,3)
如果需要传递数组,请使用_.difference(ar1, ar2)
由于您已经在使用下划线,所以这可以简单得多。
emptyArray = _.intersection(array, array2)
array2 = _.difference(array2, emptyArray)
相关文章:
- JavaScript-保存、存储和更新数组
- 使用ajax(刚刚更改的值)更新数组表
- 如何使用ajax和jquery动态更新数组表
- 使用条件for循环更新数组-Javascript
- 正在RactiveJS上更新数组
- 更新数组中的嵌入文档 - Mongodb + Node Driver
- 余烬更新数组中的对象
- 通过代码+敲除更新数组中的值
- 正在尝试获取事件之外的更新数组的值
- 更新数组后,ng重复双重渲染
- 使用angularjs中复选框的值更新数组
- 将变量推送到数组中,并在每次单击时更新数组
- 如何在Mongoose中从多个数组更新数组内部的值
- 在 ReactJS 中更新数组中对象的最佳方法是什么
- 在 Rally SDK 2 中,如何更新数组字段,例如在变更集的工件上
- 更新数组对象值
- MongoDB 用变量更新数组
- AngularJS - 使用 $http 更新数组内的嵌套对象属性
- JavaScript 使用索引更新数组元素
- 如何更新数组中的所有值?-JS/Jquery.