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