删除两个重复的项目javascript数组

杰米·赫伯(Jamie Hutber)

我有这两个数组

var array1 = 
      [ { name: 'placeone', leagueID: '8368223' },
      { name: 'placetwo', leagueID: '6164631' },
      { name: 'placethree', leagueID: '4564836' },
      { name: 'placefour', leagueID: '9722578' },
      { name: 'placefive', leagueID: '9722578' }];
    var array2 = 
      [{name: 'placeone', leagueID: '8368223' },
      {name: 'placetwo', leagueID: '6164631' },
      {name: 'placethree', leagueID: '4564836' },
      {name: 'placefour', leagueID: '9722578' },
      {name: 'placesix', leagueID: '9722578' }];

我想删除所有重复的结果,两个都只留下:

  [{ name: 'placefive', leagueID: '9722578' },
  { _id: 55b7f4825d3255b043e3dfe8, name: 'placesix', leagueID: '9722578', __v: 0 }]

我具有以下功能,但是如果您在错误的树上吠叫,则不需要重用任何功能:)

var unquie = function (array1, array2, name) {
    var myArr = array1.concat(array2);
    var newArr = myArr;

    for(var h = 0; h < myArr.length; h++) {
        var curItem = myArr[h][name];
        var foundCount = 0;
        // search array for item
        for(var i = 0; i < myArr.length; i++) {
            if (myArr[i][name] === myArr[h][name])
                foundCount++;
        }
        if(foundCount > 1) {
            // remove repeated item from new array
            for(var j = 0; j < newArr.length; j++) {
                if(newArr[j][name] === curItem) {
                    newArr.splice(j, 1);
                    j = j - 1;
                }
            }
        }
    }

    return newArr;
};
unquie(array1, array2, 'name');
//Random incorrect results :(

var array1 = 
      [ { name: 'placeone', leagueID: '8368223' },
      { name: 'placetwo', leagueID: '6164631' },
      { name: 'placethree', leagueID: '4564836' },
      { name: 'placefour', leagueID: '9722578' },
      { name: 'placefive', leagueID: '9722578' }];

    var array2 = 
      [{name: 'placeone', leagueID: '8368223' },
      {name: 'placetwo', leagueID: '6164631' },
      {name: 'placethree', leagueID: '4564836' },
      {name: 'placefour', leagueID: '9722578' },
      {name: 'placesix', leagueID: '9722578' }]


console.info('Original Arrays');
console.info(array1);
console.info(array2);
    
    var unquie = function (array1, array2, name) {
    	var myArr = array1.concat(array2);
    	var newArr = myArr;
    	
    	for(var h = 0; h < myArr.length; h++) {
    		var curItem = myArr[h][name];
    		var foundCount = 0;
          
    		for(var i = 0; i < myArr.length; i++) {
    			if (myArr[i][name] === myArr[h][name])
    				foundCount++;
    		}
    		if(foundCount > 1) {
    			// remove repeated item from new array
    			for(var j = 0; j < newArr.length; j++) {
    				if(newArr[j][name] === curItem) {
    					newArr.splice(j, 1);
    					j = j - 1;
    				}
    			}
    		}
    	}
    
    	return newArr;
    };

    console.info('Converted Arrays');
    console.info(unquie(array1, array2, 'name'));
    //

GPicazo

另一个解决方案:

var array1 = 
      [ { name: 'placeone', leagueID: '8368223' },
      { name: 'placetwo', leagueID: '6164631' },
      { name: 'placethree', leagueID: '4564836' },
      { name: 'placefour', leagueID: '9722578' },
      { name: 'placefive', leagueID: '9722578' }];

    var array2 = 
      [{name: 'placeone', leagueID: '8368223' },
      {name: 'placetwo', leagueID: '6164631' },
      {name: 'placethree', leagueID: '4564836' },
      {name: 'placefour', leagueID: '9722578' },
      {name: 'placesix', leagueID: '9722578' }]


console.info('Original Arrays');
console.info(array1);
console.info(array2);

    var unquie = function (array1, array2, propName) {
        var myArr = array1.concat(array2);
        var newArr = [];

        for (var i = 0; i < myArr.length; i++) {
          var dupIndex = -1;
          var item = myArr[i];

          for (var j = 0; j < newArr.length; j++) {
            if (item[propName] == newArr[j][propName]) {
              dupIndex = j;
              break;
            }
          }

          if (dupIndex >= 0) {
            newArr.splice(dupIndex, 1);
          } else {
            newArr.push(item);
          }
        }

        return newArr;
    }

    console.info('Converted Arrays');
    console.info(unquie(array1, array2, 'name'));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

比较两个Javascript数组并删除重复项

比较两个JavaScript数组并删除重复的条目

删除对象数组javascript / react-native中两个重复的字段之一

使用Javascript从两个对象数组中删除重复项

如何删除对象数组中的两个重复值

从两个numpy数组中删除重复的元素

合并两个numpy数组并删除重复项?

.splice() 从两个数组中删除项目 - 从数组中删除重复项

有两个具有相似项目的数组,如何在 javascript 中删除这些项目?

根据两个条件从JavaScript中的对象数组中删除对象(重复的mac地址&使用的条件小于或大于)

减少两个项目之间的重复

Javascript函数根据两个条件/两个属性从数组中删除特定元素

PHP合并两个重复的数组

如果JavaScript中的对象数组中有两个具有相同值的项目,如何删除一个项目?

循环仅删除两个项目?

如何在数组的每个两个元素之间重复插入项目?

合并两个排序的数组时,使用Java中的集合删除重复项

在删除重复项时合并两个多维数组,依赖于它们的特定元素

当两个值相同时从数组中删除重复项

Python,比较两个numpy数组,查找组并删除重复项

如何删除数组中两个重复对象的实例

php如果找到如何删除两个重复的关联数组

删除重复元素并从两个数组中取出一个元素

如何删除两个数组之间的重复数组

如何在JavaScript中合并两个数组并删除重复项

如何比较对象的两个数组并删除JavaScript中的重复项

JavaScript 对象重复数据删除中的两个数组

比较两个具有对象的数组,并从第一个数组中删除重复项

根据javascript中的两个属性获取数组中重复对象的列表