- 浏览: 2613249 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1286)
- js-oop (2)
- js-window (10)
- js-event (19)
- js-string (37)
- js-array (27)
- js-page (4)
- js-dom (62)
- js-lang (8)
- js-number (7)
- js-platform (3)
- js-object (15)
- js-element (3)
- js-browser (7)
- js-url (6)
- js-date (10)
- css基础 (48)
- css优化 (15)
- html基础 (17)
- html标签 (19)
- js基础 (117)
- js-兼容性差异 (33)
- js引擎 (3)
- js性能 (14)
- json (6)
- jQuery源码浅析 (43)
- web mobile开发资料 (78)
- js跨域 (2)
- html5 (74)
- html5-canvas (7)
- css3 (53)
- 浏览器 (5)
- api设计学 (3)
- js-加载 (3)
- linux (37)
- 架构师 (1)
- php (2)
- self开发的脚本库--凤凰 (2)
- web应用名词 (6)
- javascript新特性翻译 (8)
- ajax (6)
- jQuery动画效果 (7)
- prototype的解读 (13)
- 优秀插件翻译 (1)
- css解决方案 (26)
- 数据库 (2)
- english daily (59)
- 浏览器内核探究 (1)
- jQuery插件介绍 (9)
- jquery基础篇 (26)
- chrome浏览器问题整理 (14)
- js选择器那些事 (3)
- 前端框架 (26)
- Firefox私有属性 (11)
- webkit私有属性集合 (17)
- 书籍推荐 (21)
- 数据结构 (1)
- 网站建设相关 (7)
- 好文翻译 (2)
- 个人作品 (3)
- kissy的解读 (4)
- css-layout(布局研究) (5)
- less研究 (1)
- YUI探究 (1)
- hash探究 (1)
- js动画 (7)
- 前端面试题 (37)
- css书写规范 (1)
- js模板引擎 (6)
- js模块化 (19)
- 编写高质量代码 (3)
- 性能探究--应用协议 (2)
- 前端图像处理 (19)
- Mac OS相关 (21)
- 正则表达式 (11)
- 离线应用相关 (0)
- 前端工具 (65)
- nodeJS (55)
- jquery优化篇 (2)
- 设计模式探究系列 (3)
- windows7 (2)
- IE10 (10)
- 微博开放平台探究 (2)
- 常用web服务接口 (1)
- 数据存储相关 (8)
- 零时文件 (2)
- jQuery Mobile (16)
- backbone (15)
- underscore (22)
- sass (11)
- android (3)
- phonegap (10)
- IE私有 (11)
- qwrap (8)
- git (14)
- chrome extensions (5)
- freemarker (11)
- angularJS (3)
- seo (2)
- markdown (3)
- css动画 (4)
- 安卓开发 (2)
- React (7)
- 活动页技术 (1)
- 网络安全 (3)
- grunt (7)
- Lo-Dash (3)
- 前端国际化 (4)
- 版本控制 (2)
- 盒模型 (4)
- 微信开发 (1)
- Mock数据工具 (1)
- sails (1)
- vim (1)
- js-color (1)
- iOS 基础 (43)
最新评论
-
jertom:
<div id="showInfo" ...
addEventListener等事件监听的参数细谈 -
乌托邦国王:
引用[u][/u]
css3动画属性系列之transform细讲移动translate -
hvang1988:
能提供附件下载吗,找不到js库,google封了访问不了
Syntaxhighlighter---代码高亮插件介绍 -
sscsacdsadcsd:
我的天 那到底是为什么function是object我看und ...
typeof func ==='function'的疑惑 -
wkjiangwk:
试了,没用,你们从不去测试。
介绍一下x-webkit-speech -------实现语音输入
很多人在使用jquery的时候应该多会有array去重或者合并的需求吧,那么你一定对$.merge和$.unique不会陌生吧。
1.$.merge----------其实这个功能只是合并两个数组,返回的是array,包含第一个数组的元素后面跟着第二个数组元素
ps:这个不会去重复。
上源码:/*
原理其实还是比较简单 i是第一个数组的length l是第二个数组的length 对第二个进行循环,在第一个数组length的基础上++往里面赋值 所以返回的数组是第一个数组然后是第2个数组 */ function merge(first,second){ var i = first.length, j = 0; if(typeof second.length === "number"){ for(var l =second.length;j<l;j++){ first[i++] = second[j]; } }else{ while(second[j] !== undefined){ first[i++] = second[j++]; } } first.length = i; //严谨的jquery啊,一般人是不会想到这边控制一下的 return first; }
$.merge([0,1,2],[2,1,3]) ------------------------[0,1,2,2,1,3]
2.$.unique --------如果你是一个jquery接触比较长的或者一直研究的人你会发现,这个api是经历过版本变革的
在1.3rc2版本中源码是这个的
/* 注意这个版本是没有对数组元素为字符串和数字去重功能的 如果要改的话可以吧 jQuery.data(array[i])直接换成array[i] */ function unique(array){ var ret =[],done ={}; try{ for(var i=0,length =array.length;i<length;i++){ var id= jQuery.data(array[i]); if(!done[id]){ done[id] = true; ret.push(array[i]); } } }catch(e){ ret =array; } return ret; }
变革点在1.4.1,从这个版本开始你会发现这样一句话
jQuery.unique = Sizzle.uniqueSort;
没有单独的unique的api了,你不知道Sizzle,好吧,多看看源码吧。不过我也会陆续放出自己的一些文档说明
好了先上源码:
/* 当然这边我没有放出sortOrder相关的api,有兴趣的自己看看 我注意想说的是思想 其实大家注意了splice了吧 算法是从index第一个开始和第0个去比,依次下去,相同就调用splice删除一个 */ function uniqueSort(results){ if(sortOrder){ hasDuplicate = baseHasDuplicate; results.sort(sortOrder); if(hasDuplicate){ for(var i=1;i<results.length;i++){ if(results[i] === results[i-1]){ results.splice(i--,1); } } } } return results; }
其实如果你一直在研究jQuery的源码 你会发现除了很多人一直再喊的性能上的提高,无论是代码的严谨性和兼容饱满性多在每一个版本中体现。学习JQuery,你需要的慢慢是从使用它,到2次封装它,再到领会它。
ps:下面我放出一个自己lib库的array的unique方法(设计思想还是tangram的,你不知道tangram,噢,你out了,呵呵)
/* *unique-unique the array;if it has same items will delete one* *@param {Array} source---the array* *@param {Function} compareFn---the compareFn* *@return {Array} result ----the uniqued array* */ ZYC.array.unique = function(source,compareFn){ var _length =source.length, result =source.slice(0), //clone source i,_item; // if compareFn is not function we will build one if('functrion' != typeof compareFn){ compareFn = function(item1,item2){ return item1 === item2; }; } //we use double circulation to compare the items while (--_length >0){ _item = result[_length]; // start from the last i = _length; while(i --){ if(compareFn(_item,result[i])){ result.splice(_length,1); break; } } } return result; };
十一的目前是进一步熟悉tangram grid。。自己也要写一个啊.
各位十一快乐
评论
2 楼
zhangyaochun
2011-09-30
lizaochengwen 写道
请问:tangram有什么好呢???跟jquery有什么区别和优势???
每一个人看法不一样 对自己有提高就行。。我虽然一直研究jQuery到现在,但是我还是觉得jQuery的核心包依赖大,不可分离,而且比较jQuery的研究需要有点资本的人才理解。。而tangram是分离式的,简单,性能上也不差
1 楼
lizaochengwen
2011-09-30
请问:tangram有什么好呢???跟jquery有什么区别和优势???
发表评论
-
array的reduce
2014-04-27 20:12 3562ES5 (js 1.8)加入了 reduce ... -
[]的二义性
2013-06-06 19:43 1057先看一道题: //a赋值的是[und ... -
array中最后一个空元素的差异
2013-06-05 16:53 1454本文来自w3help的一篇《SJ2007: ... -
qwrap-hashset之intersect
2013-04-25 18:55 1328本文开始载入qwrap的几个hashset相 ... -
qwrap-hashset之union
2013-04-25 17:43 1412本文开始载入qwrap的几个hashset相 ... -
介绍jquery事件的一种内部写法
2013-03-25 20:00 2042注释:本文不探究jquery event机制, ... -
jquery add详解
2013-03-19 18:40 0add:function(elem,types, ... -
jquery事件系统解耦之一
2013-03-19 17:43 0先上代码:http://code.jqu ... -
jquery api之camelCase
2013-03-12 11:36 1219本代码取之:1.4.3版本(才开始有) ... -
underscore之size
2013-02-28 17:29 1532size _.size(l ... -
underscore的数组操作之first与last
2013-02-26 13:21 1459first (居然还有两个别名:he ... -
underscore的数组操作之difference
2013-02-26 11:04 2052difference _.di ... -
jq的选择器流程之二
2013-01-28 16:45 0前面简单些了一篇《jq的选择器流程分析开篇》,本文关注1. ... -
jq的选择器流程分析开篇
2013-01-28 14:17 1727本文简单地分析以下jquery的选择器流程: 为了 ... -
jquery Sizzle系列之filters
2013-01-28 12:16 1729本代码来自1.7.1版本。 jQuery.expr ... -
event.isDefaultPrevented
2013-01-14 12:18 1648jQuery 1.3版本开始引入了一个这个 ... -
删除数组的偶数项
2013-01-06 17:04 4050问题:要删除指定数组中偶数索引的item? ----- ... -
jQuery相关的boxModel
2012-12-21 20:58 1588此方法比较简单,但是 ... -
深入解读jquery的数据存储相关(data)序3
2012-12-19 18:27 2228前言: 上一篇: 深入解读jquery的数 ... -
深入解读jquery的数据存储相关(data)序3
2012-12-19 18:26 1本文关注一下jQuery1.4版本: 主要的变化: ...
相关推荐
`jQuery Migrate` 是一个非常重要的工具,尤其对于那些依赖旧版 jQuery 功能或插件的开发者来说。在本文中,我们将深入探讨 `jQuery Migrate 1.2.1.min.js` 的作用、如何解决 `jQuery` 和 `jqPrint` 兼容性问题,...
本章深入探讨了jQuery提供的各种工具函数,包括浏览器检测标志、数组操作函数、对象扩展与合并以及动态加载脚本等。通过这些函数,开发者可以更高效地编写代码,同时增强代码的可维护性和可扩展性。接下来的章节将...
$.jQuery( selector [, context] ), .jQuery( element ), .jQuery( elementArray ), .jQuery( jQueryObject ), .jQuery( ) $.jQuery( html [, ownerDocument] ), .jQuery( html, props ) $.jQuery( fn ) jQuery ...
- **`.each()`, `.extend()`, `.grep()`, `.map()`, `.merge()`, `.trim()`, `.unique()`**:提供了一系列实用的数组和字符串操作方法。 - **`.ajaxComplete()`, `.ajaxError()`, `.ajaxSend()`, `.ajaxStart()`, `....
- **官方网站**: [www.jquery.com](http://www.jquery.com) - **下载**: 可以直接从官网下载最新的稳定版或开发版。 - **CDN**: 使用CDN链接引入jQuery库,如Google CDN等。 3. **学习资源** - **官方文档**: ...
TortoiseGit是一款深受开发者喜爱的Git版本控制系统与Windows资源管理器集成的工具。这个压缩包包含两个重要的组件,即"TortoiseGit-2.8.0.0-64bit.msi"和"TortoiseGit-LanguagePack-2.8.0.0-64bit-zh_CN.msi"。 ...
9. **$.extend()和$.merge()**:这两个方法用于合并对象或数组,是jQuery中常用的实用工具。 10. **$.each()**:这是一个遍历对象或数组的迭代器,可以用来执行自定义操作。 在升级到jQuery 1.12.4时,可能遇到的...
npm-merge-driver(1)-用于自动合并锁文件的git merge驱动程序自动设置(推荐): 要立即开始使用它: $ npx npm-merge-driver install --global或按项目在本地安装: $ cd /path/to/git/repository$ npx npm-merge...
《TortoiseSVN-1.10.0.28176-x64-svn-1.10.0.msi:深入理解版本控制系统与TortoiseSVN》 在信息技术领域,版本控制是不可或缺的一部分,它帮助开发者管理项目代码的变更历史,协同工作并确保数据的安全性。...
6. **实用工具方法** - **尺寸与位置**: `width()`, `height()`, `offset()`等方法获取元素的尺寸和位置信息。 - **内容操作**: `html()`, `text()`, `val()`用于获取或设置元素的内容、文本或值。 - **数组与...
jQuery 1.11.0 速查表 核心 jQuery 核心函数 jQuery([sel,[context]]) jQuery(html,[ownerDoc])1.8* jQuery(callback) jQuery.holdReady(hold) jQuery 对象访问 each(callback) size() length selector ...
yolo算法-道路破损-缺陷数据集-18514张图像带标签-坑洼merge_data-qffrm.zip;yolo算法-道路破损-缺陷数据集-18514张图像带标签-坑洼merge_data-qffrm.zip;yolo算法-道路破损-缺陷数据集-18514张图像带标签-坑洼...
《TortoiseSVN在64位Windows环境下的应用与详解》 TortoiseSVN,作为一款广受欢迎的Subversion(SVN)客户端,以其直观的图形用户界面和强大的版本控制功能,深受开发者和团队协作人员的喜爱。本文将详细探讨64位版...
《TortoiseSVN-1.9.5.27581-x64-svn-1.9.5.msi安装包》是一款基于Subversion(简称SVN)的图形化客户端工具,专为Windows平台设计。Subversion是一种广泛使用的版本控制系统,其核心功能在于跟踪文件和目录的变更,...
《7-PDF.Split.and.Merge.Portable 2:轻松掌握PDF合并与分割技术》 PDF(Portable Document Format)格式因其跨平台、保持原文档格式不变的特性,在日常工作和学习中广泛应用。然而,面对大量的PDF文件,有时我们...
jQuery是一个广泛使用的JavaScript库,它的易用性和丰富的功能使其成为网页开发的首选工具。而jQuery.spin.js是基于jQuery的一个扩展,它引入了Spinner库,这是一个轻量级的解决方案,用于创建各种各样的Loading动画...
标题中的"two-phase-merge_sort-.rar_2phase merge sort_merge_sort_two merge"指的是一个采用两阶段归并排序算法的程序或文档集合。这个算法是针对大数据量、无法一次性加载到内存中的情况设计的,常见于外部排序...
$.inArray(value, array) $.toArray() $.merge(first, second) $.unique(array) $.parseJSON(json) 函数操作 $.noop $.proxy(function, scope) 测试操作 $.contains(container, contained) $.isArray(obj) $.is...