Stack Overflow en español Asked on December 9, 2021
tengo un array con 34 objetos los cuales obtienen una dirección.
Cada objeto es así
{
"name": "",
"description": "",
"address": "",
"coords": {
"lat":"",
"lng":""
}
}
Simplemente necesito ordenar el array para que me ponga primero los que tienen el nombre parecido a cierto string.
Por ejemplo si el string de búsqueda es "Open" me ordene el array y que primero me ponga los objetos que tienen alguna palabra relacionada con Open en el nombre.
Seria algo así:
const sorted = this.stores.sort((a, b) => {
if (a.name.includes(myLocationCity) || b.name.includes(myLocationCity)) {
return -1;
}
});
Debe ser fácil de hacer, pero aun no aprendo muy bien el uso del sort
Muchísimas gracias.
La función Array.sort()
acepta una función que compara dos valores A y B y devuelve:
-1
si A debe ir antes que B en el array ordenado (A < B)0
si es indifirente cuál va antes (A = B)1
si A debe ir después que B (A > B)En tu caso, si solo quieres primero los que incluyen un texto dado y luego los que no:
this.stores.sort((a, b) => {
if (a.name.includes(myLocationCity)) {
if (b.name.includes(myLocationCity)) {
return 0; // son iguales
}
return -1; // a tiene que ir antes que b
} else if (b.name.includes(myLocationCity)) {
return 1; // b tiene que ir antes que a
}
return 0; // son iguales
});
Ten en cuenta que Array.sort()
realiza la ordenación modificando el array original. No deja el original igual y devuelve otro ordenado.
Answered by jotaelesalinas on December 9, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP