JSFiddle - React, Tailwind, and code Playground
by Vadim
JavaScript
var entity = [
{
ID: "L_780",
TITLE: "Лид #780",
},
{
ID: "CO_186",
TITLE: "AutoCompany90",
}
]
var tasks = [
{
action: { accept: false, decline: false, complete: true, approve: false, disapprove: false },
favorite: "N",
id: "18",
title: "Задача без привязки к сущности 1",
ufCrmTask: false,
},
{
action: {accept: false, decline: false, complete: true, approve: false, disapprove: false},
favorite: "N",
id: "20",
title: "Задача для компании 1",
ufCrmTask: ["CO_186"],
},
{
action: {accept: false, decline: false, complete: true, approve: false, disapprove: false},
favorite: "N",
id: "20",
title: "Задача для компании 2",
ufCrmTask: ["CO_186", "L_780"],
},
{
action: { accept: false, decline: false, complete: true, approve: false, disapprove: false },
favorite: "N",
id: "18",
title: "Задача без привязки к сущности 2",
ufCrmTask: false,
},
]
var tasksToEntityMap = {
withoutEntity: []
}
/* после первого условия запишутся совпадения в arrayList под ключом title из массива с которым значения совпало , затем после проверки второго условия запишется в arrayList в объект с именем withouEntity совпадения в которых значение проверяемого ключа равно false. */
tasks.forEach(function(task){
var taskOwner = entity.find(function(entity){
return task.ufCrmTask && task.ufCrmTask.includes(entity.ID)
});
var item;
if(taskOwner) {
if(tasksToEntityMap[taskOwner.TITLE]){
tasksToEntityMap[taskOwner.TITLE].push(task)
} else {
tasksToEntityMap[taskOwner.TITLE] = [task]
}
} else {
tasksToEntityMap.withoutEntity.push(task)
}
})
console.log(tasksToEntityMap)