sort ordenar objetos objects array alphabetically javascript sorting

ordenar - sort object javascript



javascript ordenar con Unicode (3)

¿Has probado la función localeCompare() String localeCompare()

function sortComparer(a, b) { return a.title.localeCompare(b.title); }

Descargo de responsabilidad: en realidad no he probado para ver qué hace localeCompare() con esos caracteres que no están en inglés, y MDN tampoco dice nada. ( toLocaleLowerCase() que toLocaleLowerCase() respeta la configuración regional actual, por lo que uno esperaría que localeCompare() fuera igual, pero aún así ...)

Hay muchos ejemplos para ordenar algunos arreglos JSON por alguna propiedad (es decir, ''título''). Estamos usando la función de comparación como esta:

function sortComparer(a, b) { if (a.title == b.title) return 0; return a1 > b1 ? 1 : -1; }

El problema es que el orden del alfabeto latino serbio se ve como "A, B, C, Č, Ć, D, ..." Cuando uso sortComparer arriba, obtengo D ordenado antes de "Č" o "Ć". ¿Alguna idea de cómo ordenar respetando el lenguaje cultural actual?


Para ordenar una matriz con una configuración personalizada, haga lo siguiente:

  1. Crea una matriz con un orden personalizado de alfabetos:

    var alphabets = ["A", "B", "C", "Č", "Ć", "D","Dž","Đ","E","F","G","H","I","J","K","L","Lj","M","N","Nj","O","P","R","S", "ÛŒ","T","U","V","Z","Ž"];

  2. Crear una lista de matriz de prueba:

    var testArrray = ["B2","D6","A1","Ć5","Č4","C3"];

  3. Crear un nombre de función de clasificación:

    function OrderFunc(){ testArrray.sort(function (a, b) { return CharCompare(a, b, 0); }); }

  4. cree la función CharCompare (índice: ordene "AAAB" antes de "AAAC"):

    function CharCompare(a, b, index) { if (index == a.length || index == b.length) return 0; //toUpperCase: isn''t case sensitive var aChar = alphabets.indexOf(a.toUpperCase().charAt(index)); var bChar = alphabets.indexOf(b.toUpperCase().charAt(index)); if (aChar != bChar) return aChar - bChar else return CharCompare(a,b,index+1)

    }

  5. Llame a OrderFunc para ordenar testArray (el resultado será: A1, B2, C3, Č4, Ć5, D6).

Prueba en linea

Buena suerte


Si la configuración regional en su sistema está configurada correctamente, entonces puede usar el método localeCompare lugar del operador mayor que para comparar las cadenas: este método localeCompare configuración regional.

function sortComparer(a,b){ return a.title.localeCompare(b.title) };