Tengo la siguiente matriz:
const person = [ { name: "John", surname: "Doe" }, { name: "Jane", surname: "Williams" }];
Quiero verificar si una coincidencia es igual a solo un nombre de la matriz. Hice lo siguiente:
match === person[0].name || match === person[1].name || match === person[3].name ? "Do something" : "Blank"
Estoy buscando una mejor manera de iterar a través de esta matriz, porque no conozco la longitud de la matriz.
person.forEach(function(item){ if(match === item.name){ // your logic goes here } })
esto itera a través de cada objeto ("{}") en su matriz y ejecuta una función (también podría usar una función de flecha). Luego, la función verifica si su valor de "coincidencia" es igual a la clave "nombre" en cada objeto (referenciado por "elemento") en la matriz que se ejecutó.
Hay otros métodos de matriz que puede consultar.
Puede usar Array.prototype.find
para buscar en una matriz de objetos.
El método
find()
devuelve el valor del primer elemento de la matriz proporcionada que satisface la función de prueba proporcionada. Si ningún valor satisface la función de prueba, se devuelveundefined
.
Fuente: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
Como demostración, he escrito un formulario de búsqueda de persons
por name
:
const persons = [ { name: "John", surname: "Doe" }, { name: "Jane", surname: "Williams" } ] function bindEvent() { const form = document.forms['find-by-name-form'] form.addEventListener('submit', onSubmit, true) } function onSubmit(event) { event.preventDefault() const { name } = event.target const person = findPersonByName(name.value) alert(person ? `${person.name} ${person.surname}` : 'no result') person && console.log(person) } function findPersonByName(name) { return persons.find((item) => item.name === name) } window.onload = bindEvent
<form name="find-by-name-form"> <label for="name">Find by name:</label> <input name="name" /> <button>Search person</button> </form>
La mejor solución para encontrar el índice de la matriz del valor de coincidencia const name = 'sandeep'
coincidencia const = personas.findindex
((persona) => persona.nombre === nombre)