API介绍
中文翻译http://lodash.qiuqudou.com/
1.pluck 采摘
var arr = [
{ dt: '20151101', ... },
{ dt: '20151102', ... },
{ dt: '20151103', ... },
{ dt: '20151104', ... }
];
_.pluck(arr, 'dt') => ['20151101', '20151102', '20151103', '20151104'];
2.find 查找
var arr = [
{ key: 'ord_amt', text: '交易额' },
{ key: 'ord_amt1', text: '交易额1' },
{ key: 'ord_amt2', text: '交易额2' }
];
// 找出 key = ord_amt 的
_.find(arr, function(item){ return item.key === 'ord_amt' });
// 如果是相等的key 判断, 例如上述可简写为
// 这事会用 _.matchProperty('key', 'ord_amt') 生成一个函数
//
// 大致为
// _.matchProperty = function(key, val){
// return function(item){
// return item[key] === val;
// }
// }
_.find(arr, 'key', 'ord_amt');
// 对于find(arr, str) 会使用 _.property
// 例如
var arr = [
{ text: 'tab1', active: true },
{ text: 'tab2' },
{ text: 'tab3' }
]
_.find(arr, 'active') => { text: 'tab1', active: true }
3.交集/并集/补集
可以参考下http://www.cnblogs.com/darrenji/p/5011241.html
// 交集
_.intersection([1, 2], [4, 2], [2, 1]); // => [2]
// 并集 union
_.union([1], [2], [3]) // => [1,2,3]
// 补集
// A: [1,2,3]
// B: [1,2,3,4,5]
// A是B的真子集, A与B交集 = A
// 在A并B中除去这个交集, 剩下的 [4,5] 即补集
_.xor([1,2,3], [1,2,3,4,5]); // => [4,5]
4.debounce(防抖) / throttle(节流)
// 防抖
// 场景: 监听文本框, 去ajax取数据
$('input').change(_.debounce(function(){
$.get('/awesome/resource', function(){
// blabla...
});
}), 1000);
// 如果在 t1 触发了事件, 这个会在 1000ms后执行.
// 如果在 1000ms 内再次触发了, 就再次延时 1000ms 执行
// 节流
// 还是上面场景
$('input').change(_.throttle(function(){
$.get('/awesome/resource', function(){
// blabla...
});
}), 5000);
// 若使用 debounce, 然后用户猛击了 30s, 没有任何反馈
// 但是此时你想及时得到反馈, 但又不能每次触发都去进行反馈
// 使用 throttle 节流, 每 5000 ms 执行一次
指标相关
groupBy 取出分组
var arr = [
{ id: 1, group_id: 1 },
{ id: 2, group_id: 2 },
{ id: 3, group_id: 1 },
{ id: 4, group_id: 2 }
];
_.groupBy(arr, 'group_id')
/*
{
'1': [ { id: 1, group_id: 1 }, { id: 3, group_id: 1 } ],
'2': [ { id: 2, group_id: 2 }, { id: 4, group_id: 2 } ]
}
*/