Tengo la siguiente matriz de objetos que quiero ordenar por clave de nombre. Por alguna razón, si trato de ordenar por la tecla "nombre", no se ordena. Si ordeno por una clave de "precio_valor", funciona.
let arr = [ { "name": "Road Bike", "slug": "road-bike", "price_value": 2499 }, { "name": "Laptop", "slug": "laptop", "price_value": 1299, }, ]; let br = [...arr].sort((a, b) => a.name - b.name)[0].name; console.log(br) //should be Laptop, even if you try to sort on slug key doesn't workSiempre tengo Road Bike como primer elemento. Si trato de ordenar la clave precio_valor, funciona normalmente.
let br = [...arr].sort( (a,b) => a.price_value - b.price_value )[0].name; console.log( br ) //It's Laptop as expected¿Dónde está el problema?
No se puede restar cadena. a.name - b.name no es una operación válida y devuelve NaN .
Debería funcionar si lo haces:
let br = [...arr].sort((a, b) => a.name.localeCompare(b.name))[0].name;