underscore中的集合操作
underscore.js中的集合操作 书接前文,我们在上一篇中将一个文本划分成了单词的数组,并统计了每个单词出现的频率。现在我们需要将排行前10的单词找出来。那么第一步就是将所有单词按照频率排序,然后将这个集合的前10个拿出来。 underscore.js为集合提供了丰富的API,这与函数式编程的鼻祖LISP语言有着直接的继承关系。LISP围绕着List提供了的众多函数。 排序 var contacts = [ { "name": "Juntao", "age": 29 }, { "name": "Abruzzi", "age": 30 }, { "name": "Sara", "age": 29 } ]; 比如想要将上面这个集合按照age排序,可以使用sortBy函数: var sorted = _(contacts).sortBy("age"); 默认的sortBy的返回值是按照升序排列的,不过JavaScript的数组原生就有reverse的API用以翻转数组,因此如果要得到降序的排列,只需要: var sorted = _(contacts).sortBy("age").reverse(); 抽取 有时候,我们需要从众多的信息中抽取自己关心的,比如上例中的contacts集合,我们在界面上仅仅需要name属性组成的集合,这时候可以通过pluck来完成抽取: var names = _.pluck(contacts, "name"); //["juntao", "abruzzi", "sara"] underscore.js默认的pluck只能抽取一层,如果遇到下面这种场景: var contacts = [ { "name": "Juntao", "age": 29, "address": { "street": "Dengling Rd" } }, { "name": "Sara", "age": 29, "address": { "street": "Zhangba 4th Rd" } } ] 想要抽取address....