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)