De ce returneaza true in initial rendering


(M Sergiu) #1

Salutare,

Exista initial rendering. De ce searchText && hideCompleted returneaza true, daca searchText initial are valoare falsey, fiind empty string? De ce nu rezulta in false && true si drept urmare sa nu populeze deloc noul array creat de filter? Cum trece de filtru in prima faza, in initial rendering, cu empty string si populeaza? hideCompleted isi schimba valoarea pt ca exista checkbox event handler.

Va multumesc

const todos = [{}.....]
const filters = {
    searchText: '',
    hideCompleted: false
}

const renderTodos = function (todos, filters) {
    const filteredTodos = todos.filter(function(todo){

        const searchTextMatch =  todo.text.toLowerCase().includes(filters.searchText.toLowerCase())
        const hideCompletedMatch = !filters.hideCompleted || !todo.completed

        return searchTextMatch && hideCompletedMatch
      
    })
}
renderTodos(todos, filters)

(Serghei Amelian) #2

Pentru că “includes” returnează true pentru string-uri goale :slight_smile:

let x = "123".includes("");
console.log(x); 

Rezultat => true


(M Sergiu) #3

Oh maaaan…:sweat_smile: Multumesc, Serghei!