前言
Underscore 是一个JavaScript实用库,提供了类似Prototype.js (或 Ruby)的一些功能,但是没有扩展任何JavaScript内置对象。它弥补了部分jQuery没有实现的功能,同时又是Backbone.js必不可少的部分。
更详细的解释请参看http://www.css88.com/doc/underscore/
正文
下面只介绍一下在party_bid中用到的几种函数
_.find的用法:遍历列表,返回第一个符合条件的值
示例
var lists = [1, 2, 3, 4, 5, 6, 7, 8]; var b = _.find(lists, function (list) { return list % 2 == 0; }); //b的值为2
_. filter的用法:顾明思意,过滤列表中所有符合条件的值,并返回一个新列表
示例
var lists = [1, 2, 3, 4, 5, 6, 7, 8]; var b = _.filter(lists, function (list) { return list % 2 == 0; }); //b的值为[2,4,6,8]
_.each的用法:遍历列表中的每一个元素,相当于一个for循环
示例
var lists = [1, 2, 3, 4, 5, 6, 7, 8]; _.each(lists, function (list) { return alert(list); }); // 结果是从1到8依次警告
_.map的用法:遍历列表进行相应操作,修改并返回原列表的值
示例
var fruits = [{name: 'apple', price: 2}, {name: 'banana', price: 6} ]; _.map(fruits, function (fruit) { if (fruit.name == 'apple') { fruit.price = 4; } return fruit; }); //fruits的值变为[{name:apple,price:4},{name:banana,price:6}]
_.sortBy的用法:按某种元素排序,返回按序排好的新列表,不改变原列表的值
示例
var fruits = [{name: 'apple', price: 2},{name: 'banana', price: 6}, {name: 'oringe', price: 1}]; var new_lists = _.sortBy(fruits, function (fruit) { return fruit.price; }); /*new_lists = [{name: 'oringe', price: 1}, {name: 'apple', price: 2},{name: 'banana', price: 6 }] ,fruits不变*/
_.chain的用法:对同一列表进行不同操作时用,按序执行直到value
示例
var lists = [3, 5, 1, 7, 4, 6, 2]; _.chain(lists) .filter(function(list){return list%2!=0;}) .sortBy(function(list){return list;}) .value() //=>[1,3,5,7]
总结
第一次接触underscore,挺好用,大大减少代码量,还在学习中,望多多指正。