我尝试在两个数组中找到元素但不起作用。比较值x 在javascript中
值 =
(1)身高:33 id:0宽度:41 x:703.2585296630859 y:246.32955852224802
valueArea =
(1)身高:33 id:2宽度:41 x:703.2585296630859 y:246.32955852224802
(2)身高:21 id:1宽度:60 x:672.8721689562212 y:213.45216754521646
for(var i=0; i<values.length;i++){
for(var j=0; j<valueArea.length; j++){
if(values[i].x != valueArea[j].x){
valueArea.push(values[i]);
}
}
}
提前感谢。
答案 0 :(得分:1)
如果不知道数组中的数据类型,很难回答,但你可以使用lodash的union函数,例如;
_.union(values, valueArea);
答案 1 :(得分:1)
var array1 = [1, 2, 3, 4, 5];
var array2 = [3, 4, 5];
var duplicates = array1.filter(function(val) {
return array2.indexOf(val) != -1;
});
console.log(duplicates);
您可以在此处查找两个不同阵列中的重复项。过滤函数的Reference
答案 2 :(得分:0)
我想我明白你要做什么。您有两个数组,它们可能包含重复项。
您希望将第一个数组中的非重复项目复制到第二个。
这样的事情:
var x = [1, 2, 3, 4, 5, 6, 7]
var y = [2, 4, 6, 8, 10]
x.forEach( function (i) {
if(y.indexOf(i) < 0) {
y.push(i);
}
});
x
// [1, 2, 3, 4, 5, 6, 7]
y
// [2, 4, 6, 8, 10, 1, 3, 5, 7]
所以你需要:
values.forEach( function (i) {
if(valueArea.indexOf(i) < 0) {
valueArea.push(i);
}
});
或者
var nonDuplicates = values.filter(function(i){ return valueArea.indexOf(i) < 0; });
valueArea.push.apply(valueArea, nonDuplicates);
答案 3 :(得分:0)
每个forEach
循环遍历数组。然后使用indexOf
查找元素是否存在。如果不存在,则会返回-1
var array_one = ['a','b','c','d'];
var array_two =['z','x','y','a'];
array_one.forEach(function(item){
var isPresent = array_two.indexOf(item);
if(isPresent !== -1){
console.log(item)
}
})
答案 4 :(得分:0)
我知道这已经得到回答,但是我发现这对我的情况很有用:Underscore.js的交集函数。
https://underscorejs.org/#intersection
_.intersection([1, 2, 3], [3, 4, 5]);
[3]
_.union()
不符合我的要求