Las bondades del método includes() en JavaScript
Tags: javascript, webdev, html, spanish
Published: 2021-03-06 18:04:31

Según la [MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/String/includes) el método `includes()` de JavaScript fue lanzado en la versión ES6 del lenguaje y solo podía ser usado con cadenas de texto, posteriormente el método se extiende para su uso en arreglos para la especificación ES7, en otras palabras: 

* `includes()` en **ES6**: se aplica a strings.
* `includes()` en **ES7**: se aplica a arrays.

Pero, ¿para que sirve exactamente este método? 🤔
En ambos casos y en síntesis, `includes` realiza una búsqueda en el string o en el array y retorna un valor boleano según sea el caso; `true` si encuentra el valor y `false` sino lo encuentra. 

## **Sintaxis**
```js
string.includes('valor a buscar', posicion);
or
array.includes('valor a buscar', posicion);
```
Donde:
* **string** y **array** representa el tipo de variable donde se aplicará el método respectivamente. 
* `posicion` es un entero **opcional** que representa la el índice desde el cual se desea realizar la búsqueda. 

Son suficientes conceptos teóricos, ahora veamos ejemplos prácticos: 

## **`includes()` aplicado a strings**
```javascript
let nombre = "Cristian Fernando Villca Gutierrez";
let res = nombre.includes("Fernando");
console.log(res); //true
```
El siguiente ejemplo devolverá por consola `true` ya que el parámetro `Fernando` pasado a `includes` si está en la cadena `nombre`. 

Ahora le pasaremos un parámetro índex opcional y analizaremos que es lo que sucede:

```javascript
let nombre = "Cristian Fernando Villca Gutierrez";
let res = nombre.includes("Fernando",17);
console.log(res); //false
```

Ahora la salida del ejemplo es `false`, ya que la búsqueda se empieza a realizar desde la posición 17 del string, por lo que no encuentra la palabra `Fernando`.

## **`includes()` aplicado a arrays**
La manera de usar `includes()` con arreglos es bastante similar a usarla con un string:

```javascript
const mi_arreglo = ["Hola", 25, "perro", false];
let res = mi_arreglo.includes("perro");
console.log(res); // true
```
La cadena `perro` ocupa la 2da posición del arreglo, por ende la salida es `true`. 

```javascript
const mi_arreglo = ["Hola", 25, "perro", false];
let res = mi_arreglo.includes("gato");
console.log(res);
```
Al buscar la palabra `gato` la salida es `false` ya que el string no contiene ninguna posición con ese valor. 

**Nota:** *De igual manera es posible pasarle un parámetro opcional numérico para que la búsqueda se realice desde un índex determinado.*

## **¿`includes()` aplicado a objetos?**

`includes()` es un método que solo se puede usar en strings y arrays, no puede usarse en objetos, si se deseara hacer algo parecido con un objeto se tendrían que buscar otros caminos.

```js
const mi_objeto = {
  nombre: "Cristian",
  edad:24,
  soltero: false
};

if('nombre' in mi_objeto){
  console.log("nombre existe");
}else{
  console.log("nombre no existe");
}
```

## **Conclusiones**
* `includes()` realiza búsquedas en strings y arrays.
* Las búsquedas por defecto se realizan desde la posición 0 de la cadena o del arreglo.
* Es posible modificar este comportamiento añadiendo un 2do parámetro opcional entero para realizar la búsqueda.
* Siempre retorna `true` o `false` dependiendo del éxito o no de la búsqueda.
* No es posible usarlo en objetos

## **Referencias**
* https://www.w3schools.com/jsref/jsref_includes_array.asp
* https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/includes

![link](https://media.giphy.com/media/l4pTjOu0NsrLApt0Q/giphy.gif)