sortBy

sortBy(iterator[, context]) -> Array

遍历元素,根据 iterator 返回的值,对 Enumerable 中的元素进行排序。

排序是稳定的,相等的元素在结果集中的次序与原次序相同。元素在应用 iterator 后返回的值必须能够进行严格的比较(即 < 操作符必须在任意两个返回值之间可用)。

注意:数组已经具有原生的 sort 方法,它依赖于数组元素的 自然顺序关系(即对于任意两个元素, < 操作符具有明确的语义)。对于数组,仅当自然顺序关系不存在或不满足需求时才需要使用 sortBy
译注:其实 Arraysort 方法也可以传递一个谓词函数作为判断数组元素大小的准则, 以便实现自定义的排序规则。

可选的 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'] 
// (根据单词中包含的元音字母的个数进行排序)