2017-04-12 14 views
13

değerine göre sıralamak için Lodash işlevini kullanın. Bir diziyi 'name' değerine göre (Lodash kullanarak) sıralamaya çalışıyorum. Lodash dokümanlarını aşağıdaki çözümü oluşturmak için kullandım ancak .orderBy'nin hiç bir etkisi olmayacak gibi görünüyor. Diziyi sıralamak için herhangi biri doğru ışık tutabilir mi?Nesnenin dizisini

Chars Dizisi

[ 
    { 
     "id":25, 
     "name":"Anakin Skywalker", 
     "createdAt":"2017-04-12T12:48:55.000Z", 
     "updatedAt":"2017-04-12T12:48:55.000Z" 
    }, 
    { 
     "id":1, 
     "name":"Luke Skywalker", 
     "createdAt":"2017-04-12T11:25:03.000Z", 
     "updatedAt":"2017-04-12T11:25:03.000Z" 
    } 
] 

Fonksiyon Kodu

var chars = this.state.characters; 

chars = _.orderBy(chars, 'name', 'asc'); // Use Lodash to sort array by 'name' 

this.setState({characters: chars}) 

cevap

18

Eğer diziye sonucu atamak zorunda giriş dizisi değişmez orderBy bu yöntem:

var chars = this.state.characters; 

chars = _.orderBy(chars, ['name'],['asc']); // Use Lodash to sort array by 'name' 

this.setState({characters: chars}) 
+1

toplam facepalm anı! Teşekkürler adam – James

+0

Rica ederim, onaylamak için unutmayın :) –

+0

hmmm, hala sıralama dizisi gibi görünmüyor. Soruyu güncellemem ya da yeni bir tane yapmam gerektiğinden emin değil miyim? – James

10

Lodash sortBy'yi (https://lodash.com/docs/4.17.4#sortBy) kullanabilirsiniz.

Kodunuz gibi olabilir:

const myArray = [ 
    { 
     "id":25, 
     "name":"Anakin Skywalker", 
     "createdAt":"2017-04-12T12:48:55.000Z", 
     "updatedAt":"2017-04-12T12:48:55.000Z" 
    }, 
    { 
     "id":1, 
     "name":"Luke Skywalker", 
     "createdAt":"2017-04-12T11:25:03.000Z", 
     "updatedAt":"2017-04-12T11:25:03.000Z" 
    } 
] 

const myOrderedArray = _.sortBy(myArray, o => o.name) 
+0

Ayrıca shorthand kullanabilirsiniz: '_.sortBy (myArray, 'name')' – Don