BackBone 学习笔记 02 库函数Collections类
来源:互联网 发布:手机淘宝的注册流程 编辑:程序博客网 时间:2024/06/05 11:25
在具体讲Backbone之前,要讲讲其依赖库Underscore,它拥有60多个独立的函数,这些函数能提供非常丰富的实用功能。学好它,能为后续的Backbone提供基础。
先让大家看段代码
var data={ Code:1001, Name:"XiSe" }
这是一个原生的JS对象,而Underscore用_()方法可以将原生的JS对象转换成Underscore对象。然后用value()方法提取出数据。
var obj=_(data); console.log(obj.value().Code+"->"+obj.value().Name);
那么,你肯定会问,直接用原生对象不更好,更方便?
前面也说过Underscore有60多个独立函数,我们需要的是要能够使用它,所以将原生的js对象转换成Underscore可不是简单的为了取值。
Underscore的60多个函数,按照不同对象可分为集合类Collections,数组类Arrays,功能函数Functions,对象Objects,工具函数Utility.这五大类型模块。
今天就先讲讲Collections:
它包含了8个函数 each(),map(),find(),filter(),max(),min(),sortBy(),groupBy().
下面进行逐步介绍其用法。
一:each()和map()用于遍历对象。
还是新建个html将之前那3个js引入,然后再新建个js,代码如下。
// JavaScript Document$(function (){ //Collections 集合 函数 //1 遍历 each() map() var data1=_.each([1,2,3,4,5,6],function (n){ if(!(n%2)){ console.log(n); //return n; //没有任何返回内容 //n是形参 } }); console.log(data1); //Array [ 1, 2, 3, 4, 5, 6 ] var data2=_.map([1,2,3,4,5,6],function (n){ if(!(n%2)){ console.log(n); return n; //若不return 则全部undefined } }); console.log(data2); //Array [ undefined, 2, undefined, 4, undefined, 6 ] /* each 与map的区别 each 只按过滤条件遍历,该动作无返回内容 map则会返回一个过滤了的数组 该数组与原data长度一样 过滤了的值 被undefined取代 */});
然后可以在浏览的控制台看出上面2个函数的结果
第一个each()的结果为先生打出了 2 4 8及符合!(n%2)的结果 最后我还打出了each()之后的值
为Array [ 1, 2, 3, 4, 5, 6 ],说明,each()函数只是将要遍历的对象一个一个的迭代的放入形参n中
,该动作是没有任何返回内容的。
接下来看看map()方法,就可以看出它与each()的区别了,虽然都是遍历,但是要返回一个与原对象同样大小的数组,并且过滤了的数据会被undefined取代。所以控制台的结果是Array [ undefined, 2, undefined, 4, undefined, 6 ]。
二:find()和filter()用于查找,过滤。
同样,给代码
//2 过滤 find() filter() var data3=_.find([2,4,6,8,10,12],function (n){ if(!(n%2==0)) return n; }); console.log(data3!=undefined?data3:"未找到"); //"未找到" //返回的是第一个找到的元素 否则undefined length==0 var data4=_.filter([1,2,3,4,5,6],function (n){ if(!(n%2==0)) return n; }); console.log(data4.length!=0?data4:"未找到"); //Array [ 1, 3, 5 ] //返回的是所有符合要求的元素的数组 //若是未找到即返回一个空数组 data.length=0
find()和filter()也是将元素一个一个的放入n中,进行过滤。
不过区别是find()返回的是第一个找到的元素,如果一个都没找到则返回undefined.
filter()却是返回所有符合要求的元素的数组。若没有找到则返回一个空数组。
三:max()和min() 最大小值
//3 最大小 max() min() var data5=_.max([1,2,3,4,5,6]); console.log(data5); //6 var data6=_.min([1,2,3,4,5,6]); console.log(data6); //1 //它 还可以配合迭代器使用 var stu=[{Code:1001,Name:'Xise'}, {Code:1002,Name:'Xise1'}, {Code:1003,Name:'Xise3'} ]; var data7=_.max(stu,function (obj){ return obj.Code; }); console.log(data7); //Object { Code: 1003, Name: "Xise3" } //同理 var data8=_.min(stu,function (obj){ return obj.Code; }); console.log(data8); //Object { Code: 1001, Name: "Xise" }
大家一看就知道怎么用了,注意的是它可以配合迭代器使用。具体看看上面就能理解了吧。
四:sortBy()和groupBy() 排序和分组
先说说排序:
//4 排序与分组 sortBy() groupBy() var data9=_.sortBy(stu,function (obj){ return obj.Code; }); for(var i in data9){ console.log(data9[i].Code+"->"+data9[i].Name); } /* "1001->Xise" "1002->Xise1" "1003->Xise3" */
(stu是最大值最小值那个)使用起来很简单如上。
比较复杂一点的就是groupBy()
var data10=_.groupBy(stu,function (obj){ return obj.Code>1002; }); console.log(data10); //Object { false: Array[2], true: Array[1] }
这里的分组时分为了2组,true组和false组,Code>1002的会被分到true组,剩下的被分到false组,控制台的结果是:Object { false: Array[2], true: Array[1] }
这就是groupBy()的用法。
现在想想,如何把2组中的值取出来呢?
现学现用,聪明的你一定知道了,不就是遍历嘛...代码如下
_.each(data10,function(value,key){ if(key=='false'){ console.log(key+"->"+value); _.each(value,function(value,key){ console.log(key+"->"+value); _.each(value,function(value,key){ console.log(key+"->"+value); }); }); } else{ console.log(key+"->"+value); _.each(value,function(value,key){ console.log(key+"->"+value); _.each(value,function(value,key){ console.log(key+"->"+value); }); }); } });
今天要讲的就到这里了,那么下次再见。
提示:学任何东西,得自己实践才能有效果哦!
- BackBone 学习笔记 02 库函数Collections类
- BackBone 学习笔记 03 库函数Arrays类
- BackBone 学习笔记 04 库函数Functions类
- BackBone 学习笔记 05 库函数Objects类
- BackBone 学习笔记 06 库函数Utility类
- backbone.js 学习笔记
- Backbone学习笔记
- Backbone.js学习笔记
- BackBone 学习笔记 01
- Backbone 学习笔记
- BackBone,Marionette 初步学习笔记
- Java学习笔记--Collections工具类
- 【JavaSE_学习笔记】Collections集合工具类
- IOS学习笔记---collections
- GD库函数学习【笔记】
- stm32库函数学习笔记
- 学习笔记---库函数
- GD库函数学习【笔记】
- Activity 初始化成员 使用 getApplicationContext()
- 各种带主题的按钮
- linux下的ehci控制器调试
- c# int[]数组转换为object[]数组
- Android系列文章
- BackBone 学习笔记 02 库函数Collections类
- Kafka分布式环境搭建
- OpenCV 闭合轮廓检测
- 理解SSL(https)中的对称加密与非对称加密
- Java网络编程(一) 建立TCP连接
- Jquery绑定Select下拉菜单
- 《介绍一款开源的类Excel电子表格软件》续:七牛云存储实战(C#)
- AndroidManifest.xml 中的intent-filter
- C语言之指针与字符串的相关操作