2016-03-28 3 views
1

sortByのドキュメントでは、R.propを使用してオブジェクトをフィールドでソートすることができます。しかし、ネストされたフィールドでソートする必要がある場合、それは機能しません。たとえば、R.prop( 'id.number')は機能しません。ramda.jsのネストされたフィールドを使用したソート

var items = [{id:3},{id:1},{id:2}]; 
var sorter = R.sortBy(R.prop('id')); 
sorter(items) 

が問題ありません。しかし、入れ子構造の場合、

私は空のリストを返します。 R.propを使う正しい方法があると思います。私は理解できません。

答えて

3

ネストされたプロパティにアクセスするためにR.pathを使用すると、例はR.sortBy(R.path(['id', 'number']))

になります
1

私が間違っていない限り、実際にはidというプロパティのみがある場合、id.number自体がプロパティとしてチェックされています。 R.prop()は、1つのレベルのみをチェックします。ネストされた構造は能力を超えており、その後は機能しません。numberは検索されません。

sortByは、考慮中の要素を取る関数を受け入れると書かれています。以下は、ramda.js REPLでテストされ、動作します:

var items = [{id:{number:3}},{id:{number:1}},{id:{number:2}}]; 
var sorter = R.sortBy(function(item) {return item['id']['number'];}); 
sorter(items) 

これは、単にプロパティを連続して検索することによって機能します。

tl; dr勝利のための無名関数。

関連する問題