Encuentra si las dos matrices contienen una propiedad o valor similar.
const one =[1,2,3,4,5] const two = [5,6,7,8] // a double loop that solves this problem O(n^2)contra
two.some(item => one.includes(item)) // this is more efficient than the double loop method // but behind the scenes isnt javascript just looping ? // why is this more performant ? // and is the big O of this O(n)?Si tu
un doble bucle que resuelve este problema
sale de los bucles tan pronto como se encuentra una coincidencia, entonces ambos métodos son igualmente ineficientes: ambos requieren iterar sobre todos los N elementos M veces, en el peor de los casos, donde N es la longitud de una matriz y M es la longitud de el otro. (Entonces, O(n * m) u O(n^2) , dependiendo de cómo desee especificar las longitudes de las entradas).
La ventaja del segundo método.
two.some(item => one.includes(item)) es que es mucho más legible que usar bucles for . No tiene más rendimiento: lo contrario es cierto, los bucles for son generalmente más rápidos que los métodos de matriz.
Si desea reducir la complejidad a O(n) , en lugar de iterar sobre la segunda matriz dentro de un ciclo, use una búsqueda de conjunto dentro del ciclo, que es mucho más rápida:
const oneSet = new Set(one); return two.some(item => oneSet.has(item)); porque la búsqueda de conjuntos es sublineal y, en general, O(1) , lo que da como resultado una complejidad general de O(n) .