La diferencia entre indexOf e include
incluye es la nueva sintaxis de EJS6.
indexOf devuelve el valor de índice correspondiente si se encuentra. Si no lo encuentra, devuelve -1. > incluye devuelve verdadero, falso, indefinido cuando se puede encontrar un valor vacío
incluye, indexOf no puede
Por ejemplo:
var?a=[' aa', 'bb', 'cc', 'dd', 'ee', NaN]
console.log(a.indexOf('dd')) //3
console.log(a .indexOf(NaN)) //-1
console.log(a.includes('ee')) //true
?console.log (a.includes(NaN )) //true
//Esto se debe a que ?indexOf? considera una matriz dispersa y el valor omitido no existe, pero ?includes? >
var?b =[,,]
console.log(b.indexOf(undefinido)) //-1?
console.log(b.includes( undefinido)) //verdadero?
//Si es una matriz, arr.includes(searchElement, fromIndex) /arr.indexOf(searchElement, fromIndex)?
?Empezar a buscar del valor de índice de arr.length fromIndex? (Los valores de índice comienzan desde 0)
var?arr=['a', 'b', 'c', 'd']
console.log(arr.indexOf( 'a', -1))?//?-1
console.log(arr.indexOf('d', -1))? //?3
console .log(arr.includes('a', -1))?//false
console.log(arr.includes('d', -1))?//true
//Si es una cadena, str.includes(searchElement, fromIndex) /str.indexOf(searchElement, fromIndex)?
?Start buscando desde el valor de índice de fromIndex?
var?str='abcde'
console.log(str.indexOf('d', -1))?//3
console.log(str.includes( 'a',-1))?//true