gpt4 book ai didi

javascript - 如果另一个数组具有相似项,则从数组中删除项

转载 作者:行者123 更新时间:2023-11-30 16:12:36 25 4
gpt4 key购买 nike

我有两个数组,一个是主数组,其中我有不同的参数,另一个数组只有两个与第一个数组匹配的参数。

如果相似数组(匹配这两个参数)匹配,我想从第一个数组中删除完整的项目。

例如:

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 中且仅具有相似 TaskId 和 ResourceId 的项目。

即我的最终数组应该是这样的

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

这里的项目被删除,因为它们在 tmpArray 中具有匹配的 TaskId 和 ResourceId

最佳答案

Array#filter结合Array#some应该有帮助。

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>');

关于javascript - 如果另一个数组具有相似项,则从数组中删除项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36016575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com