이 모델을 상상해/컬렉션처럼 :Backbone.js/underscore.js의 비교기에서 멀티 레벨 정렬을 구현하는 방법은 무엇입니까?
var AModel = Backbone.Model.extend({
defaults: {
a: 'a string',
b: 'another string',
c: 'yet another string'
}
});
var ACollection = Backbone.Collection.extend({
model: AModel,
comparator: function(amodel) {
...
}
});
어떻게 다단계 정렬을 구현하는 비교기를 쓸 수 있을까? AModel
의 a
속성으로 정렬 한 다음 b
속성으로 정렬 한 다음 c
속성으로 정렬하고 싶습니다.
나는 이와 비슷한 모양의 비교기를 해킹했지만 더 나은/더 똑똑한 방법이 있는지 알고 싶습니다.
comparator: function(amodel) {
var s = '',
assumed_max_length_of_any_attribute = 30;
s += amodel.get('a');
while (s.length < assumed_max_length_of_any_attribute) {
s += ' ';
}
s += amodel.get('b');
while (s.length < assumed_max_length_of_any_attribute) {
s += ' ';
}
s += amodel.get('c');
while (s.length < assumed_max_length_of_any_attribute) {
s += ' ';
}
return s;
}
이어서, s
적절히 공간이 채워지고 다중 레벨 "사전"순서이어야한다.
collection.sort(key=lambda x: x.get('c'))
collection.sort(key=lambda x: x.get('b'))
collection.sort(key=lambda x: x.get('a'))
더 나은 방법이 있나요 : (위의 파이썬에서 유사한 등가물을 가지고 어떻게 든 경우) 그러나 모든 파이썬의 안정적인 멀티 레벨 정렬의 아름다움에 비해 매우 심한 느낌?
예,이 기능이 일주일 전에, 백본 0.9에 도입되었다. 버전 기록을 읽을 가치가 있습니다. – biziclop
아, 글쎄 ... 내 백본을 업데이트해야한다고 생각한다. (나는 0.5.3에있다.) ... – dlamotte
이 새로운 방법을 사용하여 someones 구현을 보니 좋겠다. – dlamotte