欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

排序 - sortBy《 Underscore 基础 》

对列表进行排序可以使用 sortBy 这个方法。它的第一个参数是要排序的列表,第二个参数是一个迭代器。最后还有一个 context ,上下文的参数。

现在我这里有一个 numbers 列表 ... 它是一个数组,里面有一些数字,现在项目的顺序,排第一个的是数字 3,然后是,6,最后是,1 .. 下面,我们可以使用 _.sortBy 去对这个列表排下顺序 ... 把 numbers 传递给这个方法 ..

_.sortBy(numbers)
// [1, 3, 6]

方法会返回一个排序以后的数组 ... 在这个数组里面,会按数字从小到大排列 ... 排第一个的数字 1 ,然后是 3 ,最后是 6 ..

下面,我们再去排列一个数组 ... (#输入 fruits)

fruits 这个数组里面有一些字符串项目 ... 下面,我们把它交给 sortBy 去处理一下 ...

_.sortBy(fruits)
// ["apple", "banana", "orange", "pear"]

得到的结果是按照字母顺序排列的项目。 在用 sortBy 这个方法的时候,我们也可以给它一个迭代器,作为它的第二个参数。这样在这个迭代器里面,可以设置一下排序的方式。

(#输入 albums)

albums 是一个数组,数组里有一些对象 ... 这些对象都有一个 duration 属性,我们可以让 sortBy 按照 duration 这个属性去为列表里的项目排下顺序。

sortBy ... 要排列顺序的列表是 albums ... 再给它一个迭代器 .. 也就是处理这个列表里的每一个项目的函数 ... 用一个匿名函数 ... 也可以在这里指定一下函数的名字 ... 把列表里的项目交给这个迭代器 .. 这里可以使用 album 表示 ...

然后在这个函数里面,返回排序的方式 ... return .. 按照 duration 这个属性的值来排序 ... album.duration ...

_.sortBy(albums, function(album){ return album.duration; })

回车 ...

这个方法返回来的列表,你会看到 ... 排在第一个的是 Ghost Sotry 这张专辑项目 .. 因为它的 duration 属性的值是所有项目里面最小的 ... 然后是 继续革命 ... 最后是 海阔天空 ...

普通分类: