Heim > Web-Frontend > js-Tutorial > Hauptteil

Implementieren der Json-Datensortierung basierend auf einem bestimmten Feld basierend auf JavaScript_Javascript-Kenntnissen

WBOY
Freigeben: 2016-05-16 15:30:28
Original
2066 Leute haben es durchsucht

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;
    }
Nach dem Login kopieren

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') &#63; '>' : '<';
  var sortFun = new Function('a', 'b', 'return a.' + sortBy + ordAlpah + 'b.' + sortBy + '&#63;1:-1');
  return sortFun;
}
alert(JSON.stringify(array));
Nach dem Login kopieren
Das Array selbst verfügt über eine Sortiermethode, die eine Sortierfunktion angeben kann, sodass eine Sortierfunktion dynamisch generiert werden kann, um die Anforderung der Sortierung nach angegebenen Objektattributen zu erfüllen

Hinweis: Die ursprüngliche Array-Sequenz ändert sich nach der Sortierung! !

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage