party_bid重构小结

关于party_bid项目代码的重构,就我目前的了解做一基础的小结。

这里我主要讲如何缩减代码。

关于缩减代码,现在我用的主要是underscore的一些方法。

1.用find方法去除for循环嵌套if判断语句

看下面一段代码:

for (var n = 0; n < activities.length; n++) {
       if (activities[n].name == bidList[0].activityName) {

               //(中间代码省略)中间假设是对循环找到的活动的对象中的一个属性进行改动,比如status,将它的值改为0;

}

 我们可以这样替换:

_.find(activities,function(activity){ return activity.name == bidList[0].activityName}).status = 0;  //这样我们就通过find找到对应的对象并进行改值

 接下来我们了解一下find方法:

var even = _.find([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
//find会返回遍历数组找到符合条件的第一个对象元素,不一定会遍历完整个数组,上面的式子会返回被2整除的第一个数2     

 讲到find,就要讲讲与它相似的filter:

var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
// filter会返回一个新数组,像上面的式子会返回 [2, 4, 6],filter它与find的不同是它会遍历完整个数组,找出数据中所有符合条件的元素

 filter我们也可以用来代替某些特定功能的for循环。

 

2.用map方法去除一些for循环

看一个for循环:

var a = [1,2,3,4]
for (var i = 0;i < a.length;i++){
      a[i] = a[i]+1;
}

 用map代替:

_.map(a,function(num){ 
     return num = num + 1;
})

 3.去除一些if

比如这样的一个if:

var a;
if(activities.length){
      a = 1;
}
if(!activities.legth){
      a = 0;
}

 可以写成这样:

var a = activities.length ? 1 : 0;

 

4.every()和some()

every()和some()方法是数组的逻辑判定:它们对数组元素应用指定的函数进行判定,返回true和false。

every()是当且仅当数组中的所有元素调用判定函数都返回true,它才返回true。

some()是当数组中至少有一个元素调用判定函数返回true,它就会返回true。

a = [1,2,3,4,5];
a.every(function(x) { return x < 10; })   //返回true
a.every(function(x) { return x > 3; })      //返回false

a.some(function(x) { return x > 10; })    //返回false
a.some(function(x) { return x = 5; })     //返回ture

 

 

还有很多方法,继续学习,继续总结,重构的越来越好。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值