2016-03-15 39 views
1

我有兩個數組一個是主陣列,其中我有不同的參數,另一個數組只有兩個參數匹配從第一個數組。如果另一個數組有相似的項目,從陣列中刪除項目

如果類似數組(匹配這兩個參數)匹配,我想從第一個數組中刪除整個項目。

如:

var mainArray = [{'Name':'Ticket1','TaskId':'b5de781e-9d25-49e7-af6d-3e254e894c04','ResourceId':'977dacf0-0b61-413e-a9a4-b469ab30d1b1', 
'Status':'Completed'},{'Name':'Ticket2','TaskId':'c5ae581e-9f25-49e7-af6d-3e254e894c04','ResourceId':'37fdadf1-0b61-413e-a9a4-b469ab30d1b1', 
'Status':'InProgress'},{'Name':'Ticket3','TaskId':'45af551e-9f25-49e7-af6d-3e254e894c04','ResourceId':'37fdadf1-0b61-413e-a9a4-b469ab30d1b1', 
'Status':'InProgress'}]; 

var tmpArray = [{'TaskId':'b5de781e-9d25-49e7-af6d-3e254e894c04','ResourceId':'977dacf0-0b61-413e-a9a4-b469ab30d1b1'},{'TaskId':'45af551e-9f25-49e7-af6d-3e254e894c04','ResourceId':'37fdadf1-0b61-413e-a9a4-b469ab30d1b1'}]; 

我希望我的最後一個數組有其不在tmpArray類似的任務id和RESOURCEID唯一項目。

即我最後的陣列應該像

[{'Name':'Ticket2','TaskId':'c5ae581e-9f25-49e7-af6d-3e254e894c04','ResourceId':'37fdadf1-0b61-413e-a9a4-b469ab30d1b1', 
'Status':'InProgress'}] 

在這裏,因爲他們曾在tmpArray

+0

你可以用'mainArray.splice(的startIndex,endIndex的)解決方案'從陣列中刪除項目。 – DCruz22

回答

2

結合Array#filterArray#some配套任務id和RESOURCEID應該幫助的項目被刪除。

var mainArray = [{ 'Name': 'Ticket1', 'TaskId': 'b5de781e-9d25-49e7-af6d-3e254e894c04', 'ResourceId': '977dacf0-0b61-413e-a9a4-b469ab30d1b1', 'Status': 'Completed' }, { 'Name': 'Ticket2', 'TaskId': 'c5ae581e-9f25-49e7-af6d-3e254e894c04', 'ResourceId': '37fdadf1-0b61-413e-a9a4-b469ab30d1b1', 'Status': 'InProgress' }, { 'Name': 'Ticket3', 'TaskId': '45af551e-9f25-49e7-af6d-3e254e894c04', 'ResourceId': '37fdadf1-0b61-413e-a9a4-b469ab30d1b1', 'Status': 'InProgress' }], 
 
    tmpArray = [{ 'TaskId': 'b5de781e-9d25-49e7-af6d-3e254e894c04', 'ResourceId': '977dacf0-0b61-413e-a9a4-b469ab30d1b1' }, { 'TaskId': '45af551e-9f25-49e7-af6d-3e254e894c04', 'ResourceId': '37fdadf1-0b61-413e-a9a4-b469ab30d1b1' }], 
 
    result = mainArray.filter(function (a) { 
 
     return !tmpArray.some(function (b) { 
 
      return a.TaskId === b.TaskId && a.ResourceId === b.ResourceId; 
 
     }); 
 
    }); 
 

 
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

或者具有更好的性能比較/複雜性和輔助對象

var mainArray = [{ 'Name': 'Ticket1', 'TaskId': 'b5de781e-9d25-49e7-af6d-3e254e894c04', 'ResourceId': '977dacf0-0b61-413e-a9a4-b469ab30d1b1', 'Status': 'Completed' }, { 'Name': 'Ticket2', 'TaskId': 'c5ae581e-9f25-49e7-af6d-3e254e894c04', 'ResourceId': '37fdadf1-0b61-413e-a9a4-b469ab30d1b1', 'Status': 'InProgress' }, { 'Name': 'Ticket3', 'TaskId': '45af551e-9f25-49e7-af6d-3e254e894c04', 'ResourceId': '37fdadf1-0b61-413e-a9a4-b469ab30d1b1', 'Status': 'InProgress' }], 
 
    tmpArray = [{ 'TaskId': 'b5de781e-9d25-49e7-af6d-3e254e894c04', 'ResourceId': '977dacf0-0b61-413e-a9a4-b469ab30d1b1' }, { 'TaskId': '45af551e-9f25-49e7-af6d-3e254e894c04', 'ResourceId': '37fdadf1-0b61-413e-a9a4-b469ab30d1b1' }], 
 
    result = function (array1, array2) { 
 
     var o = {}; 
 
     tmpArray.forEach(function (a) { 
 
      o[a.TaskId + '|' + a.ResourceId] = true; 
 
     }); 
 
     return mainArray.filter(function (a) { 
 
      return !o[a.TaskId + '|' + a.ResourceId]; 
 
     }); 
 
    }(mainArray, tmpArray); 
 

 
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');