Hola, quiero recorrer dos matrices arr1 y arr2 y verificar si un valor en arr1 coincide con cada valor en arr2 usando javascript.
a continuación están las matrices
const arr1 = [ "item/1/component/1", "item/1/", "item-group/1/item/1", "item/2/component/2", "item/2", "item-group/2/item/2/component/2/product/1", ] const arr2 = [ "1", "2" ]ahora quiero recorrer cada valor de arr1 con cada valor de arr2 y verificar si coincide con el "valor del artículo/arr2"
entonces, para el primer valor "1" de arr2, tengo que recorrer cada valor de arr1 y verificar si coincide con la cadena "item/1"
por lo tanto, "elemento/1/componente/1" debe verificarse con "elemento/1" y no son iguales "elemento/1/" debe verificarse con "elemento/1" y son iguales para el resto de elementos en arr1 con primer valor de arr2. si ninguna de las cadenas de arr1 coincide con el primer valor de arr2, debería devolver verdadero
nuevamente debe recorrer los elementos arr1 con el segundo valor de arr2 en este caso "2" y buscar "elemento/2" y verificar si coinciden. si al menos un valor de arr1 coincide, devuelve verdadero
el arr1 debe coincidir con al menos una cadena para todos los valores de arr2. si no coincide con al menos un valor de arr2, debería devolver falso. ¿Cómo puedo hacerlo? Podría alguien ayudarme con esto. Gracias.
Soy nuevo en la programación y trato de encontrar una solución a esto desde hace mucho tiempo y no puedo resolver esto. Gracias.
que he probado?
for (let i = 0; i < arr1.length; i++) { for (let j = 0; j < arr2.length; j++) { console.log(arr1[i] === `item/${arr2[j]}/`); } }thsi registrará verdadero o falso para cada valor de arr1. pero quiero devolver verdadero o falso para todo después de recorrer todos los elementos en arr2 si hay una falla para que el valor de arr2 devuelva falso.
Puedes probar el siguiente código:
const arr1 = [ "item/1/component/1", "item/1/", "item-group/1/item/1", "item/2/component/2", "item/2", "item-group/2/item/2/component/2/product/1", ] const arr2 = [ "1", "2" ] function func(){ for (let i = 0; i < arr2.length; i++) { for (let j = 0; j < arr1.length; j++) { let temp = "item/"+arr2[i]; if(temp == arr1[j] ){ return true } } } return false } console.log(func())Oye, no estoy seguro de lo que estás buscando exactamente y, para ser honesto, no soy un experto, pero solo espero que esto pueda guiarte para continuar con tu desafío:
function checkArrays(array1, array2) { for(let i=0; i < array1.length; i++) { for(let j=0; j < array2.length; i++) { if(array1.indexOf(array2) !== -1) { return true } else { return false } } return true } } console.log(checkArrays( "item/1/component/1", "1" ))También puede verificar el método .some() que devolverá verdadero si se cumple al menos una condición. otra forma podría ser verificar usando el método match() con Regex o el método .includes() también... :)
Comience asignando los elementos arr2 a arr2 item2/${a2} , luego, para cada uno de estos nuevos valores, verifique si cada elemento de arr1 .startsWith() lo es.
const arr1 = [ "item/1/component/1", "item/1/", "item-group/1/item/1", "item/2/component/2", "item/2", "item-group/2/item/2/component/2/product/1", ] const arr2 = [ "1", "2" ]; arr2.map(a2 => `item/${a2}`).forEach( a2 => arr1.forEach(a1 => console.log(a2, a1, a1.startsWith( a2 ) ? true : false )) );