前言


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,挺好用,大大减少代码量,还在学习中,望多多指正。