Estoy tratando de encontrar el nombre con el número más bajo después de él, pero iterarlo es lento con listas más grandes. Por ejemplo, el resultado esperado debería ser ["bob", 1] ["jeff", 2] ["wal-E",2]
let items = [["bob",1],["jeff",2],["wal-E",2],["bob",1],["bob",10]] let items2 = [] let Lowest = 0; for (y in items){ for (z in items) { if (items[y][0] == items[z][0] && items[y][1]<=items[z][1]){ continue; } else if (items[y][0] == items[z][0]){ Lowest += 1 if (Lowest >= 2){ break; } else { continue; } } } if (Lowest == 0){ items2.push(items[y]) } } console.log(items2);Podría reducir la matriz y recopilar los valores más pequeños.
const items = [["bob", 1], ["jeff", 2], ["wal-E", 2], ["bob", 1], ["bob", 10]], result = Object.entries(items.reduce((r, [name, value]) => { if (!(name in r) || r[name] > value) r[name] = value; return r; }, {})); console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0; }Usar reduce es una solución elegante para lograr esto
let items = [["bob",1],["jeff",2],["wal-E",2],["bob",1],["bob",10]]; const lowestItem = items.reduce((a, b) => a[1] < b[1] ? a : b); console.log(lowestItem); Lea más sobre Array.prototype.reduce aquí: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
Puede almacenar el nombre con el número más bajo y el número más bajo en dos variables separadas, luego recorrer la matriz y verificar si el segundo elemento de cada matriz es más pequeño que el número más bajo.
Si es así, establezca el número más bajo en el segundo elemento de la matriz y el nombre más bajo en el primer elemento de la matriz.
let items = [["bob",1],["jeff",2],["wal-E",2],["bob",1],["bob",10]] let lowest; let lowestName; items.forEach(e => { if(!lowest || e[1] < lowest){ lowest = e[1]; lowestName = e[0]; } }) console.log(lowestName, lowest)