답변:
현재 lodash 3.5.0 사용할 수 sortByOrder을 (개명 해 orderBy를 V4.3.0에서) :
var data = _.sortByOrder(array_of_objects, ['type','name'], [true, false]);
버전 3.10.0 부터 주문시 표준 시맨틱 (asc, desc)을 사용할 수 있습니다.
var data = _.sortByOrder(array_of_objects, ['type','name'], ['asc', 'desc']);
에서 버전 4 lodash이 방법이 변경되었습니다 해 orderBy :
var data = _.orderBy(array_of_objects, ['type','name'], ['asc', 'desc']);
_.sortByOrder is not a function
lodash의 최신 버전.
, ['asc', 'desc']
부분은 lodash@4.17.10 나를 무시지고 있습니다. 모든 것이 오름차순으로 정렬됩니다.
_.sortBy
. _.orderBy
대신 시도하십시오 . 도움이 되었기를 바랍니다.
당신은 항상 사용할 수 있습니다 Array.prototype.reverse()
var data = _.sortBy(array_of_objects, ['type', 'name']).reverse();
특정 속성을 내림차순으로 정렬하려면 끝에 모든 .reverse ()를 추가하지 않으려는 경우 모든 정렬이 내림차순으로 표시되므로주의해야합니다.
특정 정렬을 내림차순으로 만들려면 내림차순하려는 각 정렬 후에 .reverse ()를 호출하여 정렬을 가장 중요하지 않은 순서에서 가장 중요한 순서로 연결하십시오.
var data = _(data).chain()
.sort("date")
.reverse() // sort by date descending
.sort("name") // sort by name ascending
.result()
_의 정렬은 안정적인 정렬이므로 두 항목의 속성 값이 같으면 순서가 유지되므로 정렬을 안전하게 연결하고 역순으로 정렬 할 수 있습니다.
딥 필드 및 멀티 필드 및 다른 방향 순서 Lodash> 4
var sortedArray = _.orderBy(mixedArray,
['foo','foo.bar','bar.foo.bar'],
['desc','asc','desc']);
열당 방향을 정의하는 편리한 방법이 있습니까?
아니요. 값을 반전시키는 콜백 함수 이외의 정렬 순서는 지정할 수 없습니다. 다중 열 정렬에서는 이것이 불가능합니다.
당신은 할 수 있습니다
_.each(array_of_objects, function(o) {
o.typeDesc = -o.type; // assuming a number
});
_.sortBy(array_of_objects, ['typeDesc', 'name'])
그 밖의 모든 것에 .sort()
는 사용자 정의 비교 기능 을 사용하여 네이티브에 의존해야 합니다.
array_of_objects.sort(function(a, b) {
return a.type - b.type // asc
|| +(b.name>a.name)||-(a.name>b.name) // desc
|| …;
});
버전 4.11.x의 문서에서 다음과 같이 말합니다.` "이 방법은 _.sortBy와 유사합니다. 반복의 정렬 순서를 기준으로 정렬 할 수 있습니다. 순서를 지정하지 않으면 모든 값이 오름차순으로 정렬됩니다. , 내림차순은 "desc", 해당 값의 오름차순 정렬은 "asc"순서를 지정하십시오. " (출처 https://lodash.com/docs/4.17.10#orderBy )
let sorted = _.orderBy(this.items, ['fieldFoo', 'fieldBar'], ['asc', 'desc'])
_.sortByOrder
하십니까?
당신은 또한 이것을 시도 할 수 있습니다 :
var data= _.reverse(_.sortBy(res.locals.subscriptionList.items, ['type', 'name']));