Underscore学习(1)

基本的遍历

each

javascript中自带了for和for in来分别遍历数组和对象,underscore则提供了一种通用的迭代器来遍历

// 遍历数组
var arr = [];
_.each(arr,function(n,i,self){
    // n是数组元素
    // i是数组元素下标
    // self指向arr自己
});

// 遍历对象
var obj = {};
_.each(obj,function(value,key,self){
    // value是键值
    // key是键名
    // self指向obj自己
});
  • 遍历数组的时候,请记住函数签名跟jquery的each正好相反
  • each不能像jquery那样通过”return false”来跳出循环
  • es5中,可以用forEach来替代underscore的each(其实underscore中的源码里会优先使用forEach)

find

很多时候我们只想找collection其中的一个值

var arr = [1,2,3];
var two = _.find(arr,function(n){return n==2;});
// two = 2;
  • find会在函数返回true的时候停止遍历
  • each完全可以用find来替代

map

映射函数

// 我们要把函数中的值都*2
var arr = [1,2,3];
var doubleArr = _.map(arr,function(n){return n*2;});
// doubleArr = [2,4,6];
  • map会把函数中返回的值依次填充到一个”新”collection中去,而不会改变原来的collection
  • es5中,map有原生的实现

filter

filter可以看成是find的完全遍历版本.它把返回true的依次装入”新”collection中去

var arr = [1,2,3,4];
var doubleArr = _.filter(arr,function(n){return n%2==0;});
// doubleArr = [2,4];

例子

去除数组中重复的数字

var arr = [1,1,2,3,4,1,2];
var dict = {};
var newArr = _.filter(arr,function(n){
    if(dict[n] === undefined){
        dict[n] = true;
        return true;
    }
});
// es6中可以简单的用Set
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值