Проверить, имеют ли два списка объектов одно и то же свойство
У меня есть два списка объектов, в которых есть разные поля. Я хочу проверить, не имеют ли два поля одинаковое значение в javascript. Мой пример - первый список
0:Client_Issue_Reference__c:null
End__c:"2018-03-06T23:00:00.000Z"
Id:"a0Q2F000000oRyBUAU"
Resource_Full_Name__c:"test user"
Start__c:"2018-03-06T15:00:00.000Z"
и мой второй список
0:Id:"0050W000006r0xnQAA"
IsActive:true
Name:"test user"
Я хочу посмотреть, если Resource_Full_Name__c!= Имя в настоящее время у меня есть
for (var i = 0; i < listOne.length; i++) {
for (var j = 0; j < listTwo.length; j++) {
if (listOne[i].Name != listTwo[j].Resource_Full_Name__c) {
buildingObjectAllUser = {}
sobjectType: "testObject";
buildingObjectAllUser.Id = listOne[i].Id;
buildingObjectAllUser.Start__c = "2018-03-06T23:00:00.000Z";
buildingObjectAllUser.End__c = "2018-03-06T23:00:00.000Z";
buildingObjectAllUser.Name = "No Hours";
buildingObjectAllUser.Resource_Full_Name__c = listOne[i].Name;
listThree.push(buildingObjectAllUser);
}
}
}
проблема с этим занимает много времени, его очень медленно
1 ответ
Это должно быть быстрее
let list1 = [{Client_Issue_Reference__c:null,
End__c:"2018-03-06T23:00:00.000Z",
Id:"a0Q2F000000oRyBUAU",
Resource_Full_Name__c:"test user",
Start__c:"2018-03-06T15:00:00.000Z"}]
let list2 = [{Id:"0050W000006r0xnQAA",
IsActive:true,
Name:"test user"}]
list1.map(obj => {
let checker = list2.find(obj2 => obj2.Name === obj.Resource_Full_Name__c)
if (!checker) {
let buildingObjectAllUser = {}
sobjectType: "testObject"
buildingObjectAllUser.Id = listOne[i].Id
buildingObjectAllUser.Start__c = "2018-03-06T23:00:00.000Z"
buildingObjectAllUser.End__c = "2018-03-06T23:00:00.000Z"
buildingObjectAllUser.Name = "No Hours"
buildingObjectAllUser.Resource_Full_Name__c = listOne[i].Name
listThree.push(buildingObjectAllUser)
return buildingObjectAllUser
}
})