1.compact

删除数组中的空元素(不是空字符串)、undefined、null

在定义变量时,定义过filter = emptyArray.filter,即调用javascript原生的数组处理函数filter,对传入的数组遍历,返回不包含空元素、undefined、null的新数组。

2.flatten 数组扁平化

通过调用$.fn.concat处理类似[1,2,[3,4],5]的扁平化,变为[1,2,3,4,5],但是只能处理一层的数组嵌套,不能处理类似[1,[2,3,[4,55[6,7]]]]这种多层数组嵌套的情况。

可以稍作修改,以便处理多层数组嵌套的情况。

3.camelize 将使用连字符-的属性转换为驼峰式写法,以方便javascript的调用。

关键点在于字符串的原生函数replace的两个参数,第一个参数是个正则表达式:匹配一个或多个-以及连字符后面的一个字母,并将字母转换大写。

4.dasherize 可以理解为camelize的倒叙行为,将驼峰式写法转换为连字符的写法

关键点也是在于理解4个正则表达式的含义:

第一个和第四个正则不解释。

先看第二个正则表达式的含义:将连续出现一次或多次的大写字母与连续出现一个大写字母和一个小写字母之间加上_,形象点的话应该是(连续出现一次或多次的大写字母)_(连续出现一个大写字母和一个小写字母);

第三个正则表达式的含义:将出现一次小写字母或者一次数字和一次大写字母之间添加_,(一次小写字母或者一次数字)_(一次大写字母)。

5.uniq 数组去重

利益的原理是:如果该条数据在数组中的位置与使用indexOf检索到的索引值不同,则说明数组中有与其相同的值。

indexOf检索的是(不指定检索起始索引位置)元素第一次在数组中出现的索引值。

zepto源码--compact、flatten、camelize、dasherize、uniq--学习笔记的更多相关文章

  1. zepto源码--核心方法(类数组相关)--学习笔记

    从这篇起,在没有介绍到各类插件之前,后面将陆续介绍zepto对外暴露的核心方法.即$.fn={}里面的所有方法的介绍.会配合zepto的API进行介绍. 其实前面已经介绍了几个,如width,heig ...

  2. zepto源码--$.map,$.each,$.grep--学习笔记

    从相对比较简单的说起: 1.$.grep  获取一个新数组,新数组只包含回调函数中返回 true 的数组项. 调用javascript中数组原生函数filter,对elements进行过滤,保留回调函 ...

  3. jQuery源码分析_工具方法(学习笔记)

    expando:生成唯一JQ字符串(内部使用) noConflict():防止冲突 isReady:DOM是否加载完成(内部) readyWait:等待多少文件的计数器(内部) holdReady() ...

  4. 读 Zepto 源码之内部方法

    数组方法 定义 var emptyArray = [] concat = emptyArray.concat filter = emptyArray.filter slice = emptyArray ...

  5. 读Zepto源码之内部方法

    数组方法 定义 var emptyArray = [] concat = emptyArray.concat filter = emptyArray.filter slice = emptyArray ...

  6. 读 Zepto 源码系列

    虽然最近工作中没有怎么用 zepto ,但是据说 zepto 的源码比较简单,而且网上的资料也比较多,所以我就挑了 zepto 下手,希望能为以后阅读其他框架的源码打下基础吧. 源码版本 本文阅读的源 ...

  7. Zepto源码分析(二)奇淫技巧总结

    Zepto源码分析(一)核心代码分析 Zepto源码分析(二)奇淫技巧总结 目录 * 前言 * 短路操作符 * 参数重载(参数个数重载) * 参数重载(参数类型重载) * CSS操作 * 获取属性值的 ...

  8. zepto源码--定义变量--学习笔记

    主要了解一下zepto定义的初始变量. 逐一以自己的理解解析,待到后面完全透彻理解之后,争取再写一遍zepto源码学习的文章. 其中的undefined确实不明白为什么定义这么个变量在这里. docu ...

  9. 读 zepto 源码之工具函数

    Zepto 提供了丰富的工具函数,下面来一一解读. 源码版本 本文阅读的源码为 zepto1.2.0 $.extend $.extend 方法可以用来扩展目标对象的属性.目标对象的同名属性会被源对象的 ...

随机推荐

  1. push和join

    Push,向数组末尾添加元素,并返回长度. Join,将数组按照join参数连接起来. 不同浏览器对JS解析不同,Join比连接字符串快,要用大量数据测试,然后比时间.

  2. 模拟 POJ 2996 Help Me with the Game

    题目地址:http://poj.org/problem?id=2996 /* 题意:给出白方和黑方的棋子和对应的坐标,输出该副棋盘的样子 模拟题 + 结构体排序:无算法,switch区分读入的字符,按 ...

  3. BZOJ1707 : [Usaco2007 Nov]tanning分配防晒霜

    S向每头奶牛连边,容量1 每个防晒霜向T连边,容量cover 每头奶牛向SPF在自己范围内的防晒霜连边,容量inf 用线段树优化建图跑最大流即可. #include<cstdio> con ...

  4. 关于Web Worker你必须知道的7件事

    介绍 通过使用Web Worker, 我们可以在浏览器后台运行Javascript, 而不占用浏览器自身线程.Web Worker可以提高应用的总体性能,并且提升用户体验.如果你想在自己的Web应用中 ...

  5. c++ map删除元素

    typedef std::map<std::string,float> StringFloatMap; StringFloatMap col1; StringFloatMap::itera ...

  6. 【POJ】1113 Wall(凸包)

    http://poj.org/problem?id=1113 答案是凸包周长+半径为l的圆的周长... 证明?这是个坑.. #include <cstdio> #include <c ...

  7. maven工程代码关联源代码配置

    最近在学习dubbo,在maven构建完成后,需要关联查看一些依赖jar的源码,配置很简单,如下: 勾选windows-Preferences-Maven- Download Artifact Sou ...

  8. 通过JDBC连接hive

    hive是大数据技术簇中进行数据仓库应用的基础组件,是其它类似数据仓库应用的对比基准.基础的数据操作我们可以通过脚本方式以hive-client进行处理.若需要开发应用程序,则需要使用hive的jdb ...

  9. ArcEngine开发:IElement.Geometry 值不在预期范围内 + 元素绘制代码

    IElement pEle = pLineEle as IElement; pEle.Geometry = pLn; pLn为一个ILine对象,想当然的以为它是IGeometry对象,可以赋值,结果 ...

  10. 导航栏下a标签失效的原因

    前天我一直没找到失效的结果,就在刚才,我用不同的浏览器打开我编写的网页,有一个浏览器的图片循环播放效果错位了,我觉得就是它上边的div把他挤下来了.正如前天网上看到的高手的们的说法.我用firebug ...