Methode
/*
* 根据某个字段实现对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;
}
Wissenspunkte
localeCompare()
-
Definition und Verwendung
Vergleicht zwei Zeichenfolgen in einer gebietsschemaspezifischen Reihenfolge. -
Grammatik
stringObject.localeCompare(target)
-
Parameter
-
Rückgabewert
Eine Zahl, die das Ergebnis des Vergleichs angibt. localeCompare() gibt eine Zahl kleiner als 0 zurück, wenn stringObject kleiner als das Ziel ist. Die Methode gibt eine Zahl größer als 0 zurück, wenn stringObject größer als target ist. Diese Methode gibt 0 zurück, wenn die beiden Zeichenfolgen gleich oder gemäß der lokalen Sortierung nicht unterscheidbar sind.Hinweise
Wenn die Operatoren < und > auf Zeichenfolgen angewendet werden, vergleichen sie Zeichenfolgen nur unter Verwendung der Unicode-Codierung der Zeichen, unabhängig von der lokalen Sortierung. Die so generierte Reihenfolge ist nicht unbedingt korrekt. Beispielsweise wird im Spanischen das Zeichen „ch“ normalerweise als Zeichen angeordnet, das zwischen den Buchstaben „c“ und „d“ steht.Die Methode localeCompare() bietet eine Möglichkeit zum Vergleichen von Zeichenfolgen unter Berücksichtigung der standardmäßigen lokalen Sortierung. Der ECMAscript-Standard legt nicht fest, wie gebietsschemaspezifische Vergleichsvorgänge durchgeführt werden, sondern legt lediglich fest, dass die Funktion die vom zugrunde liegenden Betriebssystem bereitgestellte Sortierung verwendet.
-
Sortieren()
-
Definition und Verwendung
Die Methode sort() wird zum Sortieren der Elemente eines Arrays verwendet. -
Grammatik
arrayObject.sort(sortby)
-
Parameter
Parameter | beschreiben |
---|---|
Sortieren nach | Optional. Gibt die Sortierreihenfolge an. Muss eine Funktion sein. |
- Rückgabewert
- Ein Verweis auf das Array. Beachten Sie, dass das Array nach dem Original-Array sortiert wird und keine Kopie erstellt wird.
- veranschaulichen
Wenn diese Methode ohne Parameter aufgerufen wird, werden die Elemente im Array alphabetisch, genauer gesagt in der Reihenfolge der Zeichenkodierung, sortiert. Dazu sollten die Elemente des Arrays zunächst zum Vergleich in Strings umgewandelt werden (falls erforderlich).
Wenn Sie nach anderen Kriterien sortieren möchten, müssen Sie eine Vergleichsfunktion bereitstellen, die zwei Werte vergleicht und eine Zahl zurückgibt, die die relative Reihenfolge der beiden Werte beschreibt. Die Vergleichsfunktion sollte zwei Parameter a und b haben und ihr Rückgabewert ist wie folgt:
- Gibt einen Wert kleiner als 0 zurück, wenn a kleiner als b ist und a vor b im sortierten Array erscheinen sollte.
- Gibt 0 zurück, wenn a gleich b ist.
- Gibt einen Wert größer als 0 zurück, wenn a größer als b ist.
umkehren()
-
Definition und Verwendung
Die Methode reverse() wird verwendet, um die Reihenfolge der Elemente in einem Array umzukehren. -
Grammatik
arrayObject.reverse()
-
Tipps und Hinweise
Hinweis: Diese Methode verändert das ursprüngliche Array und erstellt kein neues Array.
Beispiel
Ausgangsdaten
nach dem Sortieren