2015秋前端开发课件-深入underscore_第1页
2015秋前端开发课件-深入underscore_第2页
2015秋前端开发课件-深入underscore_第3页
2015秋前端开发课件-深入underscore_第4页
2015秋前端开发课件-深入underscore_第5页
免费预览已结束,剩余30页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2-深入Underscore.js

深入基于查询的JavaScript2015Spring,xi'anUnderscore.jsUnderscore.js是JavaScript库,扩展了常规JavaScript功能提供了扩展给对象,数组,选择器,等在客户端JavaScript(Web和手机)和服务器端JavaScript(Node.js)可用Underscore.js功能Underscore扩展功能有:Collections集合each,map,find,filter,where,some,countByArrays数组first,last,union,uniq,rangeFunctions函数Bind,delay,defer,once,afterObjects对象Keys,values,extend,functions,clone模板和链式

扩展集合集合Collections集合意味着数组和对象所有的Underscore方法都运行在数组和对象上(关联数组)集合扩展_.each()-集合迭代_.map(),_.pluck()-集合投影_.filter(),_.reject(),_.where()-元素过滤器_.every(),_.some()-对集合求值_.sortBy(),_.groupBy()-排序并分组

集合:each()_.each()在元素列表上迭代,依照迭代函数生产出每个元素像for-in如果支持,委托至原生的forEach函数

能够用对象:

varnumbers=[1,2,3,4,5,6,7,8];_.each(numbers,console.log);_.each(numbers,function(item){console.log(item);}//输出所有数字_.each(console,console.log);//输出所有控制台成员varperson=newPerson("张三","李四");_.each(person,console.log);//输出张三和李四_.each()演示集合:map()_.map()产生了新的元素数组,当值被计算之后委托至原生map映射,如果支持也可使用对象varnumbers=[0,1,2,3,4,5,6,7,8];varnumberNames=["zero","one","two","three",…]functionnumbersToNames(item){returnnumberNames[item];}_.map(numbers,numbersToNames);//打印数字名_.map(console,function(item){returnitem.toString();});_.map()演示集合:filter()和reject()过滤和排斥,返回原集合的子集,基于布尔表达式过滤返回匹配条件的所有项排斥返回不满足条件的所有项varnumbers=[0,1,2,3,4,5,6,7,8];functionisEven(number){returnnumber%2===0;}vareven=_.filter(numbers,isEven);varodd=_.reject(numbers,isEven);_.filter()和_.reject()演示集合:where()_.where()基于属性值来过滤集合返回原集合的子集varpeople=[{name:"张三",age:21}, {name:"李四",age:11}, {name:"王五",age:14}, {name:"赵六",age:11};varelevenYearsOld=_.where(people,{age:11});//返回李四和赵六_.where()演示集合:every()和some()_.every()如果每个元素都满足布尔表达式,返回true_.some()如果有某个元素满足布尔表达式,返回true如果没有元素满足条件,返回falsevarnumbers=[1,2,3,4,5,6,7,8,9,10];varanyEven=_.any(numbers,function(el){returnel%2==0;});//anyEven=truevarallEven=_.all(numbers,function(el){returnel%2==0;});//allEven=false;_.every()和_.some()演示集合:pluck()_.pluck()返回集合的投影选择所有元素,但只返回其中部分_.map()的简化版本varpeople=[{name:'张三',age:40},{name:'李四',age:50},{name:'王五',age:60}];_.pluck(people,'name');//=>["张三","李四","王五"]_.pluck()演示集合:sortBy()和groupBy()_.sortBy()对集合的元素排序非常像原生的排序函数通过属性排序通过迭代函数排序

_.groupBy()对集合的元素分组通过属性分组通过迭代函数分组

varpeople=[…];people=_.sortBy(people,'name');_.groupBy([1.3,2.1,2.4],function(num){returnMath.floor(num);});//=>{1:[1.3],2:[2.1,2.4]}_.sortBy()和_.groupBy()演示数组扩展数组扩展数组扩展只运行在数组对象上并没有运行于关联数组和对象上数组扩展:_.first()和_.initial()-选择第一项_.last()和_.rest()-选择最后一项pact()-删除所有false值_.union()和_.intersect()-联合或相交两个或多个数组数组:first()和initial()_.first()返回数组的第一个元素可使用参数来返回前N个元素_.initial()返回除了最后一个元素的所有元素可使用参数返回除最后N个元素外所有元素varnumbers=[1,2,3,4,5];varfirst=_.first(numbers);//1VarfirstTwo=_.first(numbers,2);//[1,2]varnumbers=[1,2,3,4,5];varinitial=_.initial(numbers);

//[1,2,3,4]varinitialTwo=_.initial(numbers,2);

//[1,2,3]_.first()和_.initial()演示数组:last()和rest()_.last()返回数组最后元素可用参数返回最后N个元素_.rest()返回除了第一个之外的所有元素可用参数返回除最初N个元素之外的所有元素varnumbers=[1,2,3,4,5];varfirst=_.last(numbers);//5VarfirstTwo=_.last(numbers,2);//[4,5]varnumbers=[1,2,3,4,5];varinitial=_.rest(numbers);

//[2,3,4,5]varinitialTwo=_.rest(numbers,2);

//[3,4,5]_.last()和_.rest()演示函数扩展函数扩展函数扩展提供了额外的功能给常规函数函数扩展:_.memoize(func)记住函数的调用如果函数用同样的参数再次调用,记住的结果将返回pose(func1,func2,func3)返回函数的组合列表同func1(func2(func3()));

函数扩展演示对象扩展对象扩展对象扩展提供一些额外的功能到常规对象上对象扩展:_.keys(obj)–列出对象的所有键_.values(obj)–列出对象的所有值_.invert(obj)–插入键和值_.extend(obj,properties)–执行原型的继承对象扩展演示提问环节练习写一个方法,从给定的学生数据中找到所有按字母表顺序姓在名之前的学生。以全名的倒序打印学生,使用Underscore

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论