当前位置: 首页 > 文档资料 > Lazy.js 英文文档 >

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);
}
NameType(s)Description
sortFnFunction?

The function used to compare elements in the sequence. The function will be passed two elements and should return:

- 1 if the first is greater
- -1 if the second is greater
- 0 if the two values are the same
descendingboolean

Whether or not the resulting sequence should be in descending order (defaults to false).

returnsSequence

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']