1. Lassen Sie mich Ihnen zunächst die in js integrierte Methode sort() vorstellen
Diese Methode sortiert die Elemente im Array standardmäßig in alphabetischer Reihenfolge. Genauer gesagt sortiert sie in der Reihenfolge der Zeichenkodierung.
Sehen Sie sich das folgende Beispiel an:
Wenn die Elemente im Array vom numerischen Typ sind, unterscheidet sich das Sortierergebnis völlig von unseren Erwartungen, da standardmäßig nach der Reihenfolge der Zeichenkodierung sortiert wird.
Lösung: Die Methode sort() erhält einen optionalen Parameter (dieser Parameter muss eine Funktion sein, wie unten gezeigt).
2. Spezifische Implementierung der JSON-Sortierung
/* * @description 根据某个字段实现对json数组的排序 * @param array 要排序的json数组对象 * @param field 排序字段(此参数必须为字符串) * @param reverse 是否倒序(默认为false) * @return array 返回排序后的json数组 */ function jsonSort(array, field, reverse) { //数组长度小于2 或 没有指定排序字段 或 不是json格式数据 if(array.length < 2 || !field || typeof array[0] !== "object") return array; //数字类型排序 if(typeof array[0][field] === "number") { array.sort(function(x, y) { return x[field] - y[field]}); } //字符串类型排序 if(typeof array[0][field] === "string") { array.sort(function(x, y) { return x[field].localeCompare(y[field])}); } //倒序 if(reverse) { array.reverse(); } return array; }
PS: In JS: JSON-Objektarray wird nach Objekteigenschaften sortiert
var array = [ {name: 'a', phone: 1}, {name: 'b', phone: 5}, {name: 'd', phone: 3}, {name: 'c', phone: 4} ] array.sort(getSortFun('desc', 'phone')); function getSortFun(order, sortBy) { var ordAlpah = (order == 'asc') ? '>' : '<'; var sortFun = new Function('a', 'b', 'return a.' + sortBy + ordAlpah + 'b.' + sortBy + '?1:-1'); return sortFun; } alert(JSON.stringify(array));