我有这两个数组
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'));
//
另一个解决方案:
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] 删除。
我来说两句