找到两个数组之间的重复元素

时间:2016-12-06 04:08:39

标签: javascript

我尝试在两个数组中找到元素但不起作用。比较值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]);                  
        }
    }
}

提前感谢。

5 个答案:

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

DEMO

答案 4 :(得分:0)

我知道这已经得到回答,但是我发现这对我的情况很有用:Underscore.js的交集函数。

https://underscorejs.org/#intersection

_.intersection([1, 2, 3], [3, 4, 5]);
[3]

_.union()不符合我的要求