¿Cómo puedo encontrar si una matriz de objetos incluye un elemento?
Supongamos que el código es
var searchEngines = [{ name: 'google', link: 'https://google.com' }, { name: 'bing', link: 'https://bing.com' }]; //now I want to check if bing includes in array searchEngines or not (below code is wrong, please correct it) console.log(searchEngines.name.includes('bing')); //must return true. but it doesn't say true instead gives me an error and crashes the app. entonces, ¿cómo puedo verificar si la matriz searchEngines incluye bing o no? Ahora, si se verificó con éxito que bing está incluido en la matriz de searchEngines de búsqueda, ¿cómo puedo acceder a bing?
como si quisiera obtener el número de índice de la matriz de bing dentro de la matriz de searchEngines de búsqueda y luego tomar el enlace y consola. Regístrelo, así que obtendré https://bing.com
en esta línea console.log(searchEngines.name.includes('bing')); , está intentando acceder a la propiedad de nombre de la variable searchEngines , que es una matriz.
Creo que una mejor manera de encontrar si la matriz incluye un objeto con la variable de nombre establecida en 'bing' sería usar la función find() .
Aquí hay un ejemplo:
var searchEngines = [{ name: 'google', link: 'https://google.com' }, { name: 'bing', link: 'https://bing.com' }]; const includesBing = searchEngines.find(se => se.name === 'bing') !== undefined; const includesYahoo = searchEngines.find(se => se.name === 'yahoo') !== undefined; console.log(includesBing) console.log(includesYahoo)Array.find devolverá undefined si no se encuentra ningún elemento que coincida con la condición.
Puede usarlo para encontrar el primer elemento cuya propiedad de name sea 'bing' . Para verificar si se encontró un elemento, cámbielo a un valor booleano y verifique si es true . Si es así, el elemento existe y puede acceder a él:
var searchEngines = [{ name: 'google', link: 'https://google.com' }, { name: 'bing', link: 'https://bing.com' } ]; const includesBing = searchEngines.find(e => e.name == 'bing') if(includesBing){ // bing exists console.log(includesBing.link) }Personalmente, me gustan las soluciones simples que también funcionan para versiones anteriores.
var searchEngines = [{ name: 'google', link: 'https://google.com' }, { name: 'bing', link: 'https://bing.com' }]; function itemExists(propName, searchValue) { for (var i in searchEngines) { if (searchEngines[i][propName] === searchValue) { return true; } } return false; } console.log("containes 'bing': " + itemExists("name", "bing"));