var check = [1,2,3,4,5,6]; var check1 =check.find((elements,index,array)=>{ return array ;}); console.log(check1);La salida es 1. ¿Por qué? Y si quiero 3 como salida de la matriz anterior al dar controles o condiciones al argumento de la matriz, ¿cómo obtenerlo?
El método find ejecuta la función callbackFn una vez para cada índice de la matriz hasta que callbackFn devuelve un valor verdadero . Si es así, find devuelve inmediatamente el valor de ese elemento. De lo contrario, find devuelve indefinido.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
Y dado que en realidad no está haciendo ninguna verificación y solo está devolviendo c (un valor verdadero), que es la matriz en sí, es por eso que devuelve 1 .
Si desea encontrar 3 o cualquier otro valor, haga lo siguiente (también nombre mejor los parámetros de su función para que sea más fácil entender lo que está sucediendo):
var check = [1, 2, 3, 4, 5, 6]; var check3 = check.find((element, index, array) => { return element === 3 }); console.log(check3); // output : 3En respuesta a la solicitud OP en los comentarios. El tercer parámetro de la función de devolución de llamada que se pasa a array.find se puede usar para modificar la matriz original en función de una condición. Este ejemplo cambia los valores pares al valor impar 1.
const check = [1,2,3,4,5,6] check.find((el, index, arr) => { if (el % 2 === 0){ arr[index] = 1 } }) console.log(check) // [2,2,3,4,5,6]Sin embargo, este no es el uso adecuado de .find y .find no debe usarse de esta manera. .find debe usarse para simplemente devolver el primer valor de una matriz que satisface una condición, como explicó decho en su respuesta. Si desea actualizar los valores en una matriz, considere usar un bucle for o .forEach .
Según su comentario, aquí se explica cómo verificar si existe un número en un índice en particular y devolver el número en función de esa verificación.
var check = [1, 2, 3, 4, 5, 6]; var check1 = check.find((el, i, arr) => { return arr.indexOf(3) > 1 && el === 3; }); var check2 = check.find((el, i, arr) => { return arr.indexOf(3) > 3 && el === 3; }); console.log(check1); console.log(check2);