Named Functions : List Operations
by Cristi Salcescu
JavaScript
let todos = createTodos();
//anonymous functions
function getTodos(users){
return todos.filter(todo => !todo.completed && todo.type === "RE")
.map(todo => ({
title : todo.title,
userName : users[todo.userId].name
}))
.sort((todo1, todo2) => todo1.userName.localeCompare(todo2.userName));
}
console.dir(getTodos(createUsers()));
//named functions
function isTopPriority(todo){
return !todo.completed && todo.type === "RE";
}
function ascByUserName(todo1, todo2){
return todo1.userName.localeCompare(todo2.userName);
}
function getTodos(users){
function toViewModel(todo){
return {
title : todo.title,
userName : users[todo.userId].name
}
}
return todos.filter(isTopPriority)
.map(toViewModel).sort(ascByUserName);
}
console.dir(getTodos(createUsers()));
function createUsers(){
return {
1 : { name : "User1"},
2 : { name : "User2"},
3 : { name : "User3"}
};
}
function createTodos(){
return [
{
id : 1,
type : "NC",
title : "This is title 1",
userId : 1,
completed : true
},
{
id : 2,
type : "RE",
title : "This is title 2",
userId : 2,
completed : false
},
{
id : 3,
type : "RE",
title : "This is title 3",
userId : 3,
completed : false
}
];
}