sortBy
sortBy(iterator[, context]) -> Array
遍历元素,根据 iterator
返回的值,对 Enumerable
中的元素进行排序。
排序是稳定的,相等的元素在结果集中的次序与原次序相同。元素在应用 iterator
后返回的值必须能够进行严格的比较(即 <
操作符必须在任意两个返回值之间可用)。
注意:数组已经具有原生的 sort
方法,它依赖于数组元素的 自然顺序关系(即对于任意两个元素,
<
操作符具有明确的语义)。对于数组,仅当自然顺序关系不存在或不满足需求时才需要使用 sortBy
。
译注:其实 Array
的 sort
方法也可以传递一个谓词函数作为判断数组元素大小的准则,
以便实现自定义的排序规则。
可选的 context
参数是 iterator
要绑定的对象,若设定该参数,iterator
中的 this
关键字将指向 context
对象。
样例
['hello', 'world', 'this', 'is', 'nice'].sortBy(function(s) {
return s.length;
})
// -> ['is', 'this', 'nice', 'hello', 'world']
['hello', 'world', 'this', 'is', 'cool'].sortBy(function(s) {
var md = s.match(/[aeiouy]/g);
return null == md ? 0 : md.length;
})
// -> [ 'world', 'this', 'is', 'hello', 'cool']
// (根据单词中包含的元音字母的个数进行排序)