我有以下2个数组:
阵列 1:
var datos1=[1,2,3,4,5,6,7];
阵列 2:
var datos2=[3,5,7];
我想要的是填充一个新数组,其中保存了其中不存在的数据,var datos2
例如:[1,2,4,6]
,我正在尝试以下方式,但这不是我想要的方式:
for(var j=0;j<datos1.length;j++){
for(var k=0;k<datos2.length;k++){
if(datos1[j]!=datos2[k]){
datosNoRepetidos[j]=datos2[k];
}
}
}
非常感谢你的帮助。
我知道你得到了一个很好解释和功能性的答案,但这个目的也可以通过filter方法来实现,根据条件返回的结果创建一个新
array
的。那在第二个array
没有! 包含此迭代元素。(这)让我们看看...让我们分析一下您的算法...
第二个for有想法……但是不完整,如果第一次不重复保存dataNotRepeated数组中的值,那么就保存第二个数组的所有值。永远。
换句话说,您将 1 与 3 进行比较……显然它们不一样……所以您已经记录了 3。问题是为什么?
开始?你应该以相反的顺序遍历数组,也就是说,在另一个中寻找你想知道它们是否存在的那些......类似的东西......
现在,这显然仍然不能解决您的问题......因为它丢失了......表明它不在第二个数组中的任何地方......
为此...让我们添加一个标志...
假设它不是......以这种方式......如果它不是......它永远不会是真的......让它成为真的......我们做以下......
所以让我们添加一个 if,它告诉我们是否添加它。
如果它成为真的……那么它就处于某种位置,对我们来说毫无用处。
现在......我们缺少其他东西...... dataNoRepeats[j] 不正确......我们必须保存在该数组的最后一个位置,而不是我们正在遍历的数组的同一位置......所以...让我们添加一个计数器。
您可以使用 lodash 的“联合”功能以简单的方式完成: https ://lodash.com/docs/4.17.5#union
代码将是这样的。