Underscore笔记

Underscore.js是一个工具类,在不扩展js的情况下,有100多个工具函数。

集合类

  1.each函数

  遍历集合中的每个元素,无返回内容

  _.each(list,iterator,[context]);

    var arr = [1,2,3,4];

    _.each(arr,function(value,index,array){
       console.log(index+":"+value+":"+array+":"+this.name);
    },{name:"zhangsan"});

    //0:1:1,2,3,4:zhangsan 
    //1:2:1,2,3,4:zhangsan 
    //2:3:1,2,3,4:zhangsan 
    //3:4:1,2,3,4:zhangsan

   var obj = {
        name:"zhangsan",
        value:1
    }
    _.each(obj,function(value,key,array){
        console.log(key+":"+value+":"+array+":"+this.name);
    },{name:"zhangsan"});

    //name:zhangsan:[object Object]:zhangsan 
    //value:1:[object Object]:zhangsan

  2.map函数

  遍历集合中的每个元素,根据iterator,返回一个新的集合

  _.map(list,iterator,[context]);

  

  var arr = [1,2,3,4];

    var newArr =  _.map(arr,function(value,index,array){
        if(value > 2){
            return value;
        }
    });
    console.log(newArr);  //[undefined, undefined, 3, 4] 返回一个和原数组等长的数组,不满足条件的会用undefined代替  

  var obj = {      name:"zhangsan",      value:1  }  var newObj =  _.map(obj,function(value,key,object){      if(value == 1){        return value;      }  });

  console.log(newObj)
  //[undefined, 1] 

  3.find函数

  find会查找符合iterator迭代器中自定义函数规则的元素。如果查找到,则返回一个首个符合的元素

  _.find(list,iterator,[context]);

  var arr = [1,2,3,4];

    var find = _.find(arr,function(value,index,array){
        if(value == 2){
            return value;
        }
    })

    console.log(find);
    //2

  4.filter函数

  filter函数会找符合iterator迭代器中自定义函数规则的元素。将匹配到的元素返回一个数组

  _.filter(list,iterator,[context]);

  var arr = [1,2,2,3,3,4];

    var find = _.filter(arr,function(value,index,array){
        if(value == 2){
            return value;
        }
    })

    console.log(find);
    //[2,2]

  5.max和min函数

  _.max(list,[iterator],[context])

  _.min(list,[iterator],[context]),查找list中最大或者最小的数,如果添加了iterator迭代器则先过滤,然后比较。

  

  

   var arr = [1,2,2,3,3,4,5];
    var max = _.max(arr,function(value,index,array){
        if(value != 5){
            return value;
        }
    })
    console.log(max);

    var min = _.min(arr,function(value,index,array){
        if(value != 1){
            return value;
        }
    })

    console.log(min);  //4  //2

  如果list为对象 例如:{name:"zhangsan",age:28,score:78}则自动过滤掉name属性

  也可以指定对象中的某个属性来判断大小

  

var arr = [{
        name:"zhangsan",
        age:18
    },{
        name:"lisi",
        age:19
    },{
        name:"wangwu",
        age:20
    }]

    var max = _.max(arr,function(value,key,array){
        return value.age;
    })
    var min = _.min(arr,function(value,key,array){
        return value.age;
    })

    console.log(max);
    console.log(min);  

    //Object {name: "wangwu", age: 20} 
    //Object {name: "zhangsan", age: 18}

 

  6.sortBy()

  sortBy函数对列表或者对象进行排序,按升序排列

  _.sortBy(list,iterator,[context])

  

var arr = [{
        name:"zhangsan",
        age:32
    },{
        name:"lisi",
        age:41
    },{
        name:"wangwu",
        age:20
    }]

    var newArr = _.sortBy(arr,function(value,key,array){
        return value.age;
    })
    for(var i=0;i<newArr.length;i++){
        console.log(newArr[i].age);  //20  //32  //41

  7.groupBy()

  groupBy函数,将List列表按迭代器自定义函数或者一个对象的属性对list进行分割成多个数组

  

var arr = [{
        name:"zhangsan",
        age:32
    },{
        name:"lisi",
        age:41
    },{
        name:"wangwu",
        age:20
    },{
        name:"wangermazi",
        age:28
    }]

    var newArr = _.groupBy(arr,function(value,key,array){
        if(value.age >= 20 && value.age <30){
            return "20组";
        }
        if(value.age >= 30 && value.age <40){
            return "30组";
        }
        if(value.age >= 40 && value.age <50){
            return "40组"
        }
    })

    console.log(newArr);  //Object {30组: Array[1], 40组: Array[1], 20组: Array[2]}

  

  

  

时间: 2024-08-25 01:58:51

Underscore笔记的相关文章

underscore.js学习笔记

最近项目需要,开始学习underscore.js,在css88网站上看到有中文API,边看边记录自己能理解的笔记: 以下内容,函数以及部分解释抄自css88愚人码头中文API 内容还在整理中,发出部分 /** *@方法参数解释 *iterator 为迭代器,该函数会获取前面数组或者对象的值作为参数传入,并且一个个进行处理 * predicate 为真值检测,该函数会将前面数组或者对象的值作为参数传入,并根据函数内容进行判断,如果能匹配上则返回true,否则返回false * @函数参数解释 *

Underscore学习笔记1

项目用了很久underscore.每次都是临时查手册,没有系统的研究过,最近有空正好看看 github地址:https://github.com/lily1010/underscore_learn 一 Underscore定义 一个JavaScript实用库,提供了一整套函数式编程的实用功能,但是没有扩展任何JavaScript内置对象,它是Backbone重度依赖的js库.主要涉及对Collection.Object.Array.Function的操作. 二 _.each (1)定位:遍历li

underscore源码笔记

问题 1.().call(this)什么意思 2._.noConflict()怎么用? 3.obj通过wrapper变为_,wrapper对象的原型中有underscore的所有方法,_比obj多了这些方法,这种继承属于构造函数的继承还是原型链的继承? 4.nodejs中module有什么用?为什么还要判断它?把underscore的命名变量放在每个模块中的exports,为什么不同exports.呢? 5.iterator怎么用? 知识点 1.将内置对象的原型链,常用方法缓存为局部变量. 2.

Backbone Events 源码笔记

用了backbone一段时间了,做一些笔记和总结,看的源码是1.12 backbone有events,model,collection,histoty,router,view这些模块,其中events是最基础的,其他的模块的prototype全部都扩展了他,所以events是非常重要的,真的很重要,还好代码比较简单,也比较好理解 这个里面的代码是从backbone里面剥离出来,然后一点一点研究和调试出来的,可以单独运行,依赖underscore 1 (function(){ 2 this.Bac

node.js 学习笔记

学习网站:http://www.nodejs.net/a/20141016/232139.html: 笔记:介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏览器就基于V8,同时打开20-30个网页都很流畅.Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低.非常适合小型网站,个性化网站,我们自己的Geek网

【转】Backbone.js学习笔记(二)细说MVC

文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Backbone源码结构 1: (function() { 2: Backbone.Events // 自定义事件 3: Backbone.Model // 模型构造函数和原型扩展 4: Backbone.Collection // 集合构造函数和原型扩展 5: Backbone.Router // 路由

(2)Underscore.js常用方法

目录 1.集合相关方法 1.1.数组的处理 map(循环,有返回值),将返回的值依次存入一个新的数组  each(循环,无返回值) reduce, shuffle, 1.2.数组的特征 every(判断与),   方法判断数组的所有元素是否都满足某个条件.如果都满足则返回true,否则返回false.  some(判断或),   方法则是只要有一个元素满足,就返回true,否则返回false. size,                        返回list的长度. 1.3.数组的过滤  

【转】Backbone.js学习笔记(一)

文章转自: http://segmentfault.com/a/1190000002386651 基本概念 前言 昨天开始学Backbone.js,写篇笔记记录一下吧,一直对MVC模式挺好奇的,也对js中MVC的开创鼻祖怀着敬畏之心,唉,不说了,好虚伪,以下是我的学习心得和笔记. 给大家看一下全球js库和框架的使用比例:这是通过搜索引擎抓取script标签统计而来的数据,可信度相当高啊,另外,不要迷恋Angular.js,Avalon.js还是挺不错的. 什么是Backbone.js? Back

Data Types in the Kernel &lt;LDD3 学习笔记&gt;

Data Types in the Kernel Use of Standard C Types /* * datasize.c -- print the size of common data items * This runs with any Linux kernel (not any Unix, because of <linux/types.h>) * * Copyright (C) 2001 Alessandro Rubini and Jonathan Corbet * Copyr