这个 sortBy 允许传入一个函数, 并把数组的每一个元素作为参数执行该函数,最后对函数返回的结果排序. 下面我来分解他的这个函数. collect方法实际就是 map方法.相当于 Array.prototype.map=function(f){ for(var i=0;ret=[];i<this.length;i++) ret[i]=f(this[i],i,this) return ret } 比如,现在 arr=[2,1,4,3] iterator=function(x){return x*x} 1-3行代码就得到了这样一个数组 [ {value:2,criteria:4}, {value:1,criteria:1}, {value:4,criteria:16}, {value:3,criteria:9} ] 4-6行代码就对数组按 criteria:进行排序,由小到大.排完得到 [ {value:1,criteria:1}, {value:2,criteria:4}, {value:3,criteria:9}, {value:4,criteria:16} ] 第7行代码最简单了,取每个元素的value属性,最终得到 [1,2,3,4] 实现对arr的sortBy(function...)排序 可能我的语言表达能力有限啊,说prototype.js 的 sortBy的时候硬是不知怎么用文字表达为好. 害得大家那么辛苦看我写的解说代码,实在是不好意思! |