2016-12-06 124 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

相關問題