Estos son mis datos Json
{ "LoginData": [ { "name": "Nick", "password": "123", "role": "employee" }, { "name": "Ratan", "password": "123", "role": "manager" }, { "name": "Rahul", "password": "123", "role": "admin" } ] }Al usar el método de archivador con el nombre, obtengo datos específicos y los almaceno en la variable userData
[{nombre: 'Rahul', contraseña: '123', rol: 'admin'}]
Pero no puedo acceder a su rol usando userData.role da indefinido
que cambio debo hacer para que me dé userData.role === "admin"
Cuando usa la función de filter , obtiene una array en la salida. Debería considerar usar el método de find .
Además, te recomendaría que aprendas sobre los métodos de matriz en MDN Docs.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
Según los documentos , Array#filter devuelve:
Una nueva matriz con los elementos que pasan la prueba. Si ningún elemento pasa la prueba, se devolverá una matriz vacía.
Por lo tanto, primero debe acceder al primer elemento en la matriz devuelta:
const data = { "LoginData": [ { "name": "Nick", "password": "123", "role": "employee" }, { "name": "Ratan", "password": "123", "role": "manager" }, { "name": "Rahul", "password": "123", "role": "admin" } ] } const userData = data.LoginData.filter(({ name }) => name === 'Rahul'); const role = userData[0]?.role; console.log(role); Si siempre hay una coincidencia máxima de un elemento, Array#find sería mejor aquí:
const data = { "LoginData": [ { "name": "Nick", "password": "123", "role": "employee" }, { "name": "Ratan", "password": "123", "role": "manager" }, { "name": "Rahul", "password": "123", "role": "admin" } ] } const userData = data.LoginData.find(({ name }) => name === 'Rahul'); const role = userData?.role; console.log(role);