sort
优质
小牛编辑
137浏览
2023-12-01
Creates a new sequence with the same elements as this one, but ordered using the specified comparison function.
This has essentially the same behavior as calling Array#sort
, but obviously instead of modifying the collection it returns a new Sequence object.
Signature
Sequence.sort = function(sortFn, descending) { /*...*/ }
Sequence.sort = function sort(sortFn, descending) { sortFn || (sortFn = compare); if (descending) { sortFn = reverseArguments(sortFn); } return new SortedSequence(this, sortFn); }
Name | Type(s) | Description |
---|---|---|
sortFn | Function? | The function used to compare elements in the sequence. The function will be passed two elements and should return:
|
descending | boolean | Whether or not the resulting sequence should be in descending order (defaults to |
returns | Sequence | The new sequence. |
Examples
Lazy([5, 10, 1]).sort() // sequence: [1, 5, 10] Lazy(['foo', 'bar']).sort() // sequence: ['bar', 'foo'] Lazy(['b', 'c', 'a']).sort(null, true) // sequence: ['c', 'b', 'a'] Lazy([5, 10, 1]).sort(null, true) // sequence: [10, 5, 1] // Sorting w/ custom comparison function Lazy(['a', 'ab', 'aa', 'ba', 'b', 'abc']).sort(function compare(x, y) { if (x.length && (x.length !== y.length)) { return compare(x.length, y.length); } if (x === y) { return 0; } return x > y ? 1 : -1; }); // => sequence: ['a', 'b', 'aa', 'ab', 'ba', 'abc']