2016-12-06 98 views
0

我试图找到两个数组中的元素,但不起作用。比较值x 以JavaScript查找两个数组之间的重复元素

=

(1)高度:33 ID:0宽度:41 X:703.2585296630859 Y:246.32955852224802

valueArea =

(1)height:33 id:2 width: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

我想,如果他们_are_等于你应该检查(''===),而不是如果他们不相等('!=' )。为什么你将非重复值推入第二个数组? --- PS你的问题目前是脱离主题,因为我们无法看到'values'和'valueArea'是什么。 – byxor

+1

请添加数组格式。 –

+0

对不起,我只开发java,从来没有在JavaScript中开发。我会尝试 – TCPN

回答

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); 
+0

谢谢,它工作。 – TCPN

1

如果不知道数组中的数据类型,很难回答,但您可以使用lodash的union函数;

_.union(values, valueArea); 
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);

在这里你可以做,找到2个不同阵列复制的东西。 Reference为过滤功能

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) 
    } 
}) 

DEMO