zepto源码--compact、flatten、camelize、dasherize、uniq--学习笔记
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--学习笔记的更多相关文章
- zepto源码--核心方法(类数组相关)--学习笔记
从这篇起,在没有介绍到各类插件之前,后面将陆续介绍zepto对外暴露的核心方法.即$.fn={}里面的所有方法的介绍.会配合zepto的API进行介绍. 其实前面已经介绍了几个,如width,heig ...
- zepto源码--$.map,$.each,$.grep--学习笔记
从相对比较简单的说起: 1.$.grep 获取一个新数组,新数组只包含回调函数中返回 true 的数组项. 调用javascript中数组原生函数filter,对elements进行过滤,保留回调函 ...
- jQuery源码分析_工具方法(学习笔记)
expando:生成唯一JQ字符串(内部使用) noConflict():防止冲突 isReady:DOM是否加载完成(内部) readyWait:等待多少文件的计数器(内部) holdReady() ...
- 读 Zepto 源码之内部方法
数组方法 定义 var emptyArray = [] concat = emptyArray.concat filter = emptyArray.filter slice = emptyArray ...
- 读Zepto源码之内部方法
数组方法 定义 var emptyArray = [] concat = emptyArray.concat filter = emptyArray.filter slice = emptyArray ...
- 读 Zepto 源码系列
虽然最近工作中没有怎么用 zepto ,但是据说 zepto 的源码比较简单,而且网上的资料也比较多,所以我就挑了 zepto 下手,希望能为以后阅读其他框架的源码打下基础吧. 源码版本 本文阅读的源 ...
- Zepto源码分析(二)奇淫技巧总结
Zepto源码分析(一)核心代码分析 Zepto源码分析(二)奇淫技巧总结 目录 * 前言 * 短路操作符 * 参数重载(参数个数重载) * 参数重载(参数类型重载) * CSS操作 * 获取属性值的 ...
- zepto源码--定义变量--学习笔记
主要了解一下zepto定义的初始变量. 逐一以自己的理解解析,待到后面完全透彻理解之后,争取再写一遍zepto源码学习的文章. 其中的undefined确实不明白为什么定义这么个变量在这里. docu ...
- 读 zepto 源码之工具函数
Zepto 提供了丰富的工具函数,下面来一一解读. 源码版本 本文阅读的源码为 zepto1.2.0 $.extend $.extend 方法可以用来扩展目标对象的属性.目标对象的同名属性会被源对象的 ...
随机推荐
- Codeforces Round #294 (Div. 2)
水 A. A and B and Chess /* 水题 */ #include <cstdio> #include <algorithm> #include <iost ...
- Rain on your Parade
Rain on your Parade Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 655350/165535 K (Java/Ot ...
- CSS3 选择器——伪类选择器
前面花了两节内容分别在<CSS3选择器——基本选择器>和<CSS3选择器——属性选择器>介绍了CSS3选择器中的基本选择器和属性选择器使用方法,今天要和大家一起学习CSS3选择 ...
- Contest Hunter Round #70 - 连续两大交易事件杯省选模拟赛
orz lydrainbowcat [Problem A]「艦これ市」70万幕后交易事件 排序机器=-=.重要的是相同的处理. 我们可以从小到大添加数字,然后维护一个位置的序列.每一种相等的数字都在一 ...
- oracle系列--第一篇 数据库基础
第一章 数据库基础 1.1 数据管理概述 1.1.1 什么是数据管理 与我们人类相比,计算机的最大优势就是能够高速.精准地运行,其运行的过程就是执行程序代码和操作指令.处理数据的过程.可以说,数据处理 ...
- UIView+LHQExtension(分类)
// // UIView+LHQExtension.h // 微博 - 李洪强(2016-5-27) // // Created by vic fan on 16/5/30. // Copyr ...
- DTD约束的校验工具安装及检验(Iexmltls工具)
通过打开我们写的dtd约束文档,我们可以看到,在我们不按规定的格式打开xml时并不能检验出错误.此时我们可以借助软件来帮助我们校验. Iexmltls是一个在IE浏览器下安装的用于检验xml约束是否正 ...
- 以下是关于Controller的一些Hint
在经过路由分发之后,实际的应用Controller接管用户的所有请求,并负责与用户数据的交互.CI中所有的应用控制器都应该是CI_Controller的子类(除非你扩展了CI的核心,那么你的Contr ...
- java 中文转换成Unicode编码和Unicode编码转换成中文
转自:一叶飘舟 http://blog.csdn.net/jdsjlzx/article/details/ package lia.meetlucene; import java.io.IOExcep ...
- JavaScript系列:模块化与链式编程
模块化:闭包和和函数作用域(JS没有块级作用域ES6之前)构造模块 var man=function(){ var age=12; return { getYear:function(){ retur ...