filter,map : Improving readability

by Cristi Salcescu

JavaScript

const tasks = [
  { 
    id : 1,
    type : "NC",
    desc : "task1",
    user : { id: 1, name: "user1"},
    completed : false
  },
  { 
    id : 2,
    type : "RE",
    desc : "task2",
    user : { id: 2, name: "user2"},
    completed : false
  },
  { 
    id : 3,
    type : "RE",
    desc : "task3",
    user : { id: 3, name: "user3"},
    completed : false
  }
];

//Imperative style
let filteredTasks = [];
for(let i=0; i<tasks.length; i++){
    let task = tasks[i];
    if (task.type === "RE" && !task.completed) {
        filteredTasks.push({ ...task, userName: task.user.name });
    }
}
console.log(filteredTasks);

//Functional style
function isPriorityTask(task){
   return task.type === "RE" && !task.completed;
}

function toTaskView(task) {
   return { ...task, userName: task.user.name };
}

let filteredTasksFP = tasks.filter(isPriorityTask).map(toTaskView);
console.log(filteredTasksFP);