Nesne dizisini tarih değerine sahip tek bir tuşa göre sırala


257

Birkaç anahtar / değer çiftleri ile nesnelerin bir dizi var ve bunları 'updated_at' dayalı sıralamak gerekir:

[
    {
        "updated_at" : "2012-01-01T06:25:24Z",
        "foo" : "bar"
    },
    {
        "updated_at" : "2012-01-09T11:25:13Z",
        "foo" : "bar"
    },
    {
        "updated_at" : "2012-01-05T04:13:24Z",
        "foo" : "bar"
    }
]

Bunu yapmanın en etkili yolu nedir?


@Topener Bu bağlantı PHP hakkında bir soruya benziyor
David Brainer

benim hatam .. doğru okumadım
Rene Pot

Yanıtlar:


339

Kullanabilirsiniz Array.sort.

İşte bir örnek:

var arr = [{
    "updated_at": "2012-01-01T06:25:24Z",
    "foo": "bar"
  },
  {
    "updated_at": "2012-01-09T11:25:13Z",
    "foo": "bar"
  },
  {
    "updated_at": "2012-01-05T04:13:24Z",
    "foo": "bar"
  }
]

arr.sort(function(a, b) {
  var keyA = new Date(a.updated_at),
    keyB = new Date(b.updated_at);
  // Compare the 2 dates
  if (keyA < keyB) return -1;
  if (keyA > keyB) return 1;
  return 0;
});

console.log(arr);


17
Kullanamaz mısın keyA - keyB(veya muhtemelen keyB - keyA)? Tarih nesnelerinin bir valueOf()yöntemi vardır.
soktinpk

dönüş a. güncellendi_at <b. güncellendi? 1: -1 benim için çalışıyor. Tarih biçimine ayrıştırmaya gerek yok.
oliversisson

a-bUzun kodlardan kaçınmak istiyorsanız, bunu yapabilmek gerçekten önemlidir. Bu durumda uzun kod mutlaka kötü olmasa da, ayrıntı düzeyinin anlaşılmasını zorlaştırdığını düşünüyorum. Şu anda kullanıyorum values.sort((a,b)=>a.attr-b.attr). Her diziyi sıralamanız gerektiğinde 5 satır yazmak zorunda kalmak sıkıcı bir hal alır.
AnnanFay

Bu örnek etkili değildir ve birçok gereksiz hesaplamalar yapar. Sıralama, herhangi bir pozitif veya negatif sayıyı geçerli bir sonuç olarak alabilir. 1,0, -1 olmaya zorlamak için ekstra hesaplamalarınıza gerek yoktur ve her yürütme için ekstra hesaplamalar ekler.
Patrick W. McMahon

Büyük thjank çalışır
Andy

158

Burada çok benzer bir soruyu zaten yanıtladım: Bir nesne dizisini sıralamak için basit işlev

Bu soru için ne istersen yapabilir bu küçük işlevi yarattı:

function sortByKey(array, key) {
    return array.sort(function(a, b) {
        var x = a[key]; var y = b[key];
        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
    });
}

11

2
Bunu nasıl tersine çevirirdin?

4
Büyük / küçük harfe duyarsız hale getirmek için, x ve y değişkenlerine .toLowerCase () ekleyebilirsiniz
Jacob van Lingen

4
Bunun gibi sıralama işlevlerini tersine çevirmek için sonucu şu şekilde çarpın -1:)
Svish

5
Veya sadece çıktıyı alıp array = array.reverse()fonksiyonu kullanın .
Luke Stevenson

31

Array.sort () metodu yerine bir dizi elemanlarını sıralar ve dizi döndürür. Değişmez olmadığı için Array.sort () yöntemine dikkat edin . Değişmez sıralama kullanım için değişmez-tür .

Bu yöntem, dizinizi akım updated_atbiçiminizi ISO biçiminde kullanarak sıralamaktır . new Data(iso_string).getTime()ISO zamanını Unix zaman damgasına dönüştürmek için kullanıyoruz . Unix zaman damgası basit matematik yapabileceğimiz bir sayıdır. İlk ve ikinci zaman damgasını çıkarırız; sonuç; ilk zaman damgası ikinciden büyükse, dönüş numarası pozitif olacaktır. İkinci sayı birinciden büyükse, dönüş değeri negatif olacaktır. İkisi aynı ise, dönüş sıfır olacaktır. Bu, satır içi işlevi için gereken dönüş değerleriyle mükemmel bir şekilde birleşir.

İçin ES6 :

arr.sort((a,b) => new Date(a.updated_at).getTime() - new Date(b.updated_at).getTime());

İçin ES5 :

arr.sort(function(a,b){ 
 return new Date(a.updated_at).getTime() - new Date(b.updated_at).getTime();
});

Eğer updated_atunix zaman damgaları olarak değiştirirseniz bunu yapabilirsiniz:

İçin ES6 :

arr.sort((a,b) => a.updated_at - b.updated_at);

İçin ES5 :

arr.sort(function(a,b){ 
 return a.updated_at - b.updated_at;
});

Bu yazı sırasında, modern tarayıcılar ES6'yı desteklemez. Modern tarayıcılar kullanılması halinde ES6 kullanmak için babel ES5 kodu transpile için. Yakın gelecekte ES6 için tarayıcı desteği bekliyoruz.

Array.sort () , 3 olası sonuçtan birinin dönüş değerini almalıdır:

  • Pozitif bir sayı (ilk öğe> ikinci öğe)
  • Negatif bir sayı (ilk öğe <ikinci öğe)
  • İki öğe eşitse 0

Satır içi işlevindeki dönüş değerinin herhangi bir pozitif veya negatif sayı olabileceğini unutmayın. Array.Sort (), dönüş numarasının ne olduğu umurunda değildir. Yalnızca dönüş değerinin pozitif, negatif veya sıfır olması umurundadır.

Değişmez sıralama için: (örnek ES6'da)

const sort = require('immutable-sort');
const array = [1, 5, 2, 4, 3];
const sortedArray = sort(array);

Ayrıca şu şekilde de yazabilirsiniz:

import sort from 'immutable-sort';
const array = [1, 5, 2, 4, 3];
const sortedArray = sort(array);

Gördüğünüz içe aktarma, ES6'ya javascript eklemenin yeni bir yoludur ve kodunuzun çok temiz görünmesini sağlar. Benim kişisel favorim.

Değişmez sıralama kaynak diziyi değiştirmez, yeni bir dizi döndürür. Kullanılması constdeğişmez verilere önerilir.


19

İşte @David Brainer-Bankers'ın biraz değiştirilmiş bir versiyonu, alfabetik olarak dize veya sayısal olarak sayıya göre sıralar ve Büyük harflerle başlayan kelimelerin küçük harfle başlayan kelimelerin üstünde sıralanmamasını sağlar (örn. "Elma, Erken" bu sırayla görüntülenir).

function sortByKey(array, key) {
    return array.sort(function(a, b) {
        var x = a[key];
        var y = b[key];

        if (typeof x == "string")
        {
            x = (""+x).toLowerCase(); 
        }
        if (typeof y == "string")
        {
            y = (""+y).toLowerCase();
        }

        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
    });
}

3
Bir [anahtar] ve b [anahtarı] her ikisi de dize değilse önerilen çözüm bir hata verebilir. I y y y.toLowerCase () = ( "" + y) = .toLowerCase yerine etmektedir ()
user8074

sort, herhangi bir pozitif veya negatif sayıyı geçerli bir getiri olarak kabul edebilir. 1,0 olması için ekstra hesaplamalar yapıyorsunuz, -1 gerekli değil. Aşırı basit bir dönüş değeri karmaşık. Hiçbir şey yapmayan ekstra hesaplamalar eklememek en iyisidir.
Patrick W. McMahon

15

Alt çizgi js veya lodash kullanın,

var arrObj = [
    {
        "updated_at" : "2012-01-01T06:25:24Z",
        "foo" : "bar"
    },
    {
        "updated_at" : "2012-01-09T11:25:13Z",
        "foo" : "bar"
    },
    {
        "updated_at" : "2012-01-05T04:13:24Z",
        "foo" : "bar"
    }
];

arrObj = _.sortBy(arrObj,"updated_at");

_.sortBy() yeni bir dizi döndürür

http://underscorejs.org/#sortBy ve lodash dokümanlarına bakın https://lodash.com/docs#sortBy


6

ES2015 desteği ile aşağıdakiler yapılabilir:

foo.sort((a, b) => a.updated_at < b.updated_at ? -1 : 1)

1
<ile - ve kaldır 'yerine satır içi gerek yok mu? -1: 1 "geçerli bir getiri elde edersiniz. Bu örnek, eşit olabilecek öğeleri hareket ettirir ve bu nedenle beklenmedik sonuçlar verebilir. Eşit öğeler için 0 döndürülmelidir.
Patrick W. McMahon


updated_at bir ISO zamanı ise, bu çalışmaz. Bu örnek Unix zaman damgalarını varsayar, ancak OP ISO biçiminde yayınlanan verileri yayınlar. Bu yüzden bir karşılaştırma yapmak için Unix zaman damgalarına dönüştürmeniz gerekir. Bu new Date(iso_str).getTime()bir Unix zaman damgası döndürecek şekilde yapılabilir .
Patrick W. McMahon

5

İçe Aktarılan Veriler

[
    {
        "gameStatus": "1",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-20 11:32:04"
    },
    {
        "gameStatus": "0",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-19 18:08:24"
    },
    {
        "gameStatus": "2",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-19 18:35:40"
    },
    {
        "gameStatus": "0",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-19 10:42:53"
    },
    {
        "gameStatus": "2",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-20 10:54:09"
    },
    {
        "gameStatus": "0",
        "userId": "1a2fefb0-5ae2-47eb-82ff-d1b2cc27875a",
        "created_at": "2018-12-19 18:46:22"
    },
    {
        "gameStatus": "1",
        "userId": "7118ed61-d8d9-4098-a81b-484158806d21",
        "created_at": "2018-12-20 10:50:48"
    }
]

Artan düzen İÇİN

arr.sort(function(a, b){
    var keyA = new Date(a.updated_at),
        keyB = new Date(b.updated_at);
    // Compare the 2 dates
    if(keyA < keyB) return -1;
    if(keyA > keyB) return 1;
    return 0;
});

Artan Sipariş Örneği

[
    {
        "gameStatus": "0",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-19 10:42:53"
    },
    {
        "gameStatus": "0",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-19 18:08:24"
    },
    {
        "gameStatus": "2",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-19 18:35:40"
    },
    {
        "gameStatus": "0",
        "userId": "1a2fefb0-5ae2-47eb-82ff-d1b2cc27875a",
        "created_at": "2018-12-19 18:46:22"
    },
    {
        "gameStatus": "1",
        "userId": "7118ed61-d8d9-4098-a81b-484158806d21",
        "created_at": "2018-12-20 10:50:48"
    },
    {
        "gameStatus": "2",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-20 10:54:09"
    },
    {
        "gameStatus": "1",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-20 11:32:04"
    }
]

Azalan düzen İÇİN

arr.sort(function(a, b){
    var keyA = new Date(a.updated_at),
        keyB = new Date(b.updated_at);
    // Compare the 2 dates
    if(keyA > keyB) return -1;
    if(keyA < keyB) return 1;
    return 0;
});

Desc Order Örneği

[
    {
        "gameStatus": "1",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-20 11:32:04"
    },
    {
        "gameStatus": "2",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-20 10:54:09"
    },
    {
        "gameStatus": "1",
        "userId": "7118ed61-d8d9-4098-a81b-484158806d21",
        "created_at": "2018-12-20 10:50:48"
    },
    {
        "gameStatus": "0",
        "userId": "1a2fefb0-5ae2-47eb-82ff-d1b2cc27875a",
        "created_at": "2018-12-19 18:46:22"
    },
    {
        "gameStatus": "2",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-19 18:35:40"
    },
    {
        "gameStatus": "0",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-19 18:08:24"
    },
    {
        "gameStatus": "0",
        "userId": "c02cfb18-ae66-430b-9524-67d9dd8f6a50",
        "created_at": "2018-12-19 10:42:53"
    }
]

3

As Bu cevabınız devletler, kullanabilirsiniz Array.sort.

arr.sort(function(a,b){return new Date(a.updated_at) - new Date(b.updated_at)})

arr = [
    {
        "updated_at" : "2012-01-01T06:25:24Z",
        "foo" : "bar"
    },
    {
        "updated_at" : "2012-01-09T11:25:13Z",
        "foo" : "bar"
    },
    {
        "updated_at" : "2012-01-05T04:13:24Z",
        "foo" : "bar"
    }
];
arr.sort(function(a,b){return new Date(a.updated_at) - new Date(b.updated_at)});
console.log(arr);


2

Aynı şeyi ancak daha kısa yapmanın başka, daha matematiksel bir yolu :

arr.sort(function(a, b){
    var diff = new Date(a.updated_at) - new Date(b.updated_at);
    return diff/(Math.abs(diff)||1);
});

veya kaygan lambda ok stilinde:

arr.sort((a, b) => {
    var diff = new Date(a.updated_at) - new Date(b.updated_at);
    return diff/(Math.abs(diff)||1);
});

Bu yöntem herhangi bir sayısal girişle yapılabilir


underated answer
two7s_clash


2

Ben dizeleri, tarihleri ​​ve sayıları nesne dizisinde aramak için kullanabileceğiniz Typescript bir sıralama işlevi oluşturduk. Ayrıca birden çok alanda da sıralama yapabilir.

export type SortType = 'string' | 'number' | 'date';
export type SortingOrder = 'asc' | 'desc';

export interface SortOptions {
  sortByKey: string;
  sortType?: SortType;
  sortingOrder?: SortingOrder;
}


class CustomSorting {
    static sortArrayOfObjects(fields: SortOptions[] = [{sortByKey: 'value', sortType: 'string', sortingOrder: 'desc'}]) {
        return (a, b) => fields
          .map((field) => {
            if (!a[field.sortByKey] || !b[field.sortByKey]) {
              return 0;
            }

            const direction = field.sortingOrder === 'asc' ? 1 : -1;

            let firstValue;
            let secondValue;

            if (field.sortType === 'string') {
              firstValue = a[field.sortByKey].toUpperCase();
              secondValue = b[field.sortByKey].toUpperCase();
            } else if (field.sortType === 'number') {
              firstValue = parseInt(a[field.sortByKey], 10);
              secondValue = parseInt(b[field.sortByKey], 10);
            } else if (field.sortType === 'date') {
              firstValue = new Date(a[field.sortByKey]);
              secondValue = new Date(b[field.sortByKey]);
            }
            return firstValue > secondValue ? direction : firstValue < secondValue ? -(direction) : 0;

          })
          .reduce((pos, neg) => pos ? pos : neg, 0);
      }
    }
}

Kullanımı:

const sortOptions = [{
      sortByKey: 'anyKey',
      sortType: 'string',
      sortingOrder: 'asc',
    }];

arrayOfObjects.sort(CustomSorting.sortArrayOfObjects(sortOptions));

1

İstemcileri dizeyi ayrıştırarak doğru zaman damgasını oluşturabilen en son ve en iyi tarayıcılarla sınırlandırmadıkça, ISO biçimli bir tarihe göre sıralama pahalı olabilir.

Eğer varsa emin senin girdi ve biliyorum her zaman yyyy-aa-ddThh olacaktır: dd: ss ve GMT (Z) her üyesinden rakamları elde edebilirsiniz ve tamsayılar gibi onları karşılaştırmak

array.sort(function(a,b){
    return a.updated_at.replace(/\D+/g,'')-b.updated_at.replace(/\D+/g,'');
});

Tarih farklı şekilde biçimlendirilebiliyorsa, iso'lu kişiler için bir şeyler eklemeniz gerekebilir:

Date.fromISO: function(s){
    var day, tz,
    rx=/^(\d{4}\-\d\d\-\d\d([tT ][\d:\.]*)?)([zZ]|([+\-])(\d\d):(\d\d))?$/,
    p= rx.exec(s) || [];
    if(p[1]){
        day= p[1].split(/\D/).map(function(itm){
            return parseInt(itm, 10) || 0;
        });
        day[1]-= 1;
        day= new Date(Date.UTC.apply(Date, day));
        if(!day.getDate()) return NaN;
        if(p[5]){
            tz= (parseInt(p[5], 10)*60);
            if(p[6]) tz+= parseInt(p[6], 10);
            if(p[4]== '+') tz*= -1;
            if(tz) day.setUTCMinutes(day.getUTCMinutes()+ tz);
        }
        return day;
    }
    return NaN;
}
if(!Array.prototype.map){
    Array.prototype.map= function(fun, scope){
        var T= this, L= T.length, A= Array(L), i= 0;
        if(typeof fun== 'function'){
            while(i< L){
                if(i in T){
                    A[i]= fun.call(scope, T[i], i, T);
                }
                ++i;
            }
            return A;
        }
    }
}
}

2
Sadece kullanamaz Date.parsemısın?
Roket Hazmat

1

Bütünlük için sortBy'nin olası kısa bir genel uygulaması:

function sortBy(list, keyFunc) {
  return list.sort((a,b) => keyFunc(a) - keyFunc(b));
}

sortBy([{"key": 2}, {"key": 1}], o => o["key"])

Bunun, yerinde sıralanan diziler sıralama yöntemini kullandığını unutmayın. bir kopya için, bir kopya oluşturmak üzere arr.concat () veya arr.slice (0) veya benzer bir yöntemi kullanabilirsiniz.


1

Bununla sıralama için kullanılacak bir anahtar fonksiyon geçirebiliriz

Array.prototype.sortBy = function(key_func, reverse=false){
    return this.sort( (a, b) => {
        var keyA = key_func(a),
            keyB = key_func(b);
        if(keyA < keyB) return reverse? 1: -1;
        if(keyA > keyB) return reverse? -1: 1;
        return 0;
    }); 
}

Örneğin,

var arr = [ {date: "01/12/00", balls: {red: "a8",  blue: 10}},
            {date: "12/13/05", balls: {red: "d6" , blue: 11}},
            {date: "03/02/04", balls: {red: "c4" , blue: 15}} ]

Biz yapabiliriz

arr.sortBy(el => el.balls.red)
/* would result in
[ {date: "01/12/00", balls: {red: "a8", blue: 10}},
  {date: "03/02/04", balls: {red: "c4", blue: 15}},
  {date: "12/13/05", balls: {red: "d6", blue: 11}} ]
*/

veya

arr.sortBy(el => new Date(el.date), true)   // second argument to reverse it
/* would result in
[ {date: "12/13/05", balls: {red: "d6", blue:11}},
  {date: "03/02/04", balls: {red: "c4", blue:15}},
  {date: "01/12/00", balls: {red: "a8", blue:10}} ]
*/

veya

arr.sortBy(el => el.balls.blue + parseInt(el.balls.red[1]))
/* would result in
[ {date: "12/13/05", balls: {red: "d6", blue:11}},    // red + blue= 17
  {date: "01/12/00", balls: {red: "a8", blue:10}},    // red + blue= 18
  {date: "03/02/04", balls: {red: "c4", blue:15}} ]   // red + blue= 19
*/

1

Bu sorunu çözmek için Lodash yardımcı programı kitaplığını kullanabilirsiniz (oldukça verimli bir kitaplıktır):

const data = [{
    "updated_at": "2012-01-01T06:25:24Z",
    "foo": "bar"
  },
  {
    "updated_at": "2012-01-09T11:25:13Z",
    "foo": "bar"
  },
  {
    "updated_at": "2012-01-05T04:13:24Z",
    "foo": "bar"
  }
]

const ordered = _.orderBy(
  data,
  function(item) {
    return item.updated_at;
  }
);

console.log(ordered)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>

Belgeleri burada bulabilirsiniz: https://lodash.com/docs/4.17.15#orderBy


0

Yazar olmak bir kapatma oluşturup onu geçebilir burada örnek çalışma olduğunu

$.get('https://data.seattle.gov/resource/3k2p-39jp.json?$limit=10&$where=within_circle(incident_location, 47.594972, -122.331518, 1609.34)', 
  function(responce) {

    var filter = 'event_clearance_group', //sort by key group name
    data = responce; 

    var compare = function (filter) {
        return function (a,b) {
            var a = a[filter],
                b = b[filter];

            if (a < b) {
                return -1;
            } else if (a > b) {
                return 1;
            } else {
                return 0;
            }
        };
    };

    filter = compare(filter); //set filter

    console.log(data.sort(filter));
});

0
var months = [
    {
        "updated_at" : "2012-01-01T06:25:24Z",
        "foo" : "bar"
    },
    {
        "updated_at" : "2012-01-09T11:25:13Z",
        "foo" : "bar"
    },
    {
        "updated_at" : "2012-01-05T04:13:24Z",
        "foo" : "bar"
    }];
months.sort((a, b)=>{
    var keyA = new Date(a.updated_at),
        keyB = new Date(b.updated_at);
    // Compare the 2 dates
    if(keyA < keyB) return -1;
    if(keyA > keyB) return 1;
    return 0;
});
console.log(months);

0
  • Array.sort()Bir diziyi sıralamak için kullanın
  • İşlevi saflaştırmak için spread operatörünü ( ) kullanarak diziyi klonlayın
  • İstediğiniz tuşa göre sırala ( updated_at)
  • Tarih dizesini tarih nesnesine dönüştürme
  • Array.sort() aritmik işlemler yapabileceğiniz bir sayı / nesne ise geçerli ve sonraki öğeden iki özellik çıkararak çalışır
const input = [
  {
    updated_at: '2012-01-01T06:25:24Z',
    foo: 'bar',
  },
  {
    updated_at: '2012-01-09T11:25:13Z',
    foo: 'bar',
  },
  {
    updated_at: '2012-01-05T04:13:24Z',
    foo: 'bar',
  }
];

const sortByUpdatedAt = (items) => [...items].sort((itemA, itemB) => new Date(itemA.updated_at) - new Date(itemB.updated_at));

const output = sortByUpdatedAt(input);

console.log(input);
/*
[ { updated_at: '2012-01-01T06:25:24Z', foo: 'bar' }, 
  { updated_at: '2012-01-09T11:25:13Z', foo: 'bar' }, 
  { updated_at: '2012-01-05T04:13:24Z', foo: 'bar' } ]
*/
console.log(output)
/*
[ { updated_at: '2012-01-01T06:25:24Z', foo: 'bar' }, 
  { updated_at: '2012-01-05T04:13:24Z', foo: 'bar' }, 
  { updated_at: '2012-01-09T11:25:13Z', foo: 'bar' } ]
*/

0

Aynı şeyle karşı karşıya, bu yüzden genel bir neden ile bu işlemek ve bunun için bir işlev oluşturmak:

//example:
//array: [{name: 'idan', workerType: '3'}, {name: 'stas', workerType: '5'}, {name: 'kirill', workerType: '2'}]
//keyField: 'workerType'
// keysArray: ['4', '3', '2', '5', '6']
sortByArrayOfKeys = (array, keyField, keysArray) => {
    array.sort((a, b) => {
        const aIndex = keysArray.indexOf(a[keyField])
        const bIndex = keysArray.indexOf(b[keyField])
        if (aIndex < bIndex) return -1;
        if (aIndex > bIndex) return 1;
        return 0;
    })
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.