2016-04-05 28 views
-1

birinci olmakKarakter böyle nesneler dizisi var sıralama

  1. bu öğeler dinamiktir - "ad" ve "sortItem" özellikleri hem;
  2. adın görüntülenmesi için iyi bir neden var, ancak başka bir alana göre sıralama;
  3. Bu dizi sunucudan geliyor, bu yüzden JSON stringify-kolayca yapılabilir.

Sonra (sortBylodash dan) sortBy(myArray, 'sortItem') ile sıralamak.

Şimdi bir varsayılan seçenek eklemek istiyorum ve sıralamadan sonra her zaman ilk seçenek olduğundan emin olmak istiyorum. Bu yüzden bazı seçenekleri denedik: ["", "A", "a"]


yılında [".", "A", "a"]

  • var myList = ['a', 'A', '']; _.sortBy(myList) sonuçlarında ["A", "_", "a"]
  • var myList = ['a', 'A', '.']; _.sortBy(myList) sonuçlarında ["A", "a", 0]
  • var myList = ['a', 'A', '_']; _.sortBy(myList) sonuçlarında

    1. var myList = ['a', 'A', 0]; _.sortBy(myList) sonuçları bu m görünüyor Şu an için en iyi bahis {name: 'Default', sodtItem: ''} eklemek ama benim varsayılan öğemin ilk olduğunu garanti edecek başka bir karakter/değer var mı?

      Düzenleme

      soru bir tür faaliyetleri oluşturmak için nasıl değildir; ama bunun yerine, Javascript'te en düşük "değer" hangi karaktere sahiptir? Başka bir deyişle, tüm olası karakterlerin (jsonification geçiren) bir listesini alır ve bunları sıralarsanız - ilk karakter ne olurdu?

  • +0

    Sıralama fonksiyonları olacak aynı dize ile beklenmedik sonuçlar üretir. Dikkatli kullan. –

    +1

    İlk önce sıralama yapabilir misiniz? * Sonra varsayılan öğeyi ekleyebilir misiniz? – nnnnnn

    +0

    İlk sıradaki karakter nedir? –

    cevap

    0

    Ana siparişi belirleyen başka bir sıralama alanı ekleyebilir ve "sortItem" ikincil sıralamaınız olacaktır.

    Yani sıralama benziyor:

    _.sortBy(myArray, ['default', 'sortItem']) 
    

    Ve dizi gibi görünüyor:

    var myArray = [ 
        {name: 'John', sortItem: 'abra'}, 
        {name: 'Doe', sortItem: 'cadabra'}, 
        {name: 'This is the default', sortItem: 'zzzzz', default: true} 
    ]; 
    
    +0

    Bu geçerli bir seçenek, ancak daha açık bir cevap olup olmadığını görmek için beklerdim. Değilse, bunu bir cevap olarak işaretleyeceğim. – XAMeLi

    İlgili konular