第 16 页|技术档 | IT圈子,ITBBB.COM

JSFunction-Array-distinct对于鸭式类型的数组去重函数

2014/04 19 11:04

JSFunction这个常用函数库的整理过程中,其实第一次写Array扩展函数的时候就包含了distinct的扩展,但是在api中我并没有公布出来,因为当时只支持对String、Int型的数组进行去重,对于Object类型的数组存在问题;之后又忙于整理ArrayLinq函数,就一直没有去重写这个函数,直到今天我终于花了一些时间吧这个较有意义的函数书写完成,并融合了ArrayLinq的语法支持按字段去重,可以让前端处理数据上更加灵活。 举例说明: 对于数值型数组去重

var intarr = [1, 2, 3, 4, 5, 3, 2]; intarr.distinct();

结果:[1,2,3,4,5] 字符串数组去重

var strarr=["zhangsan","lisi","wangwu","lisi"]; strarr.distinct();

结果:["zhangsan","lisi","wangwu"] 上边两个函数都非常简单易懂,对于下边object类型的数组进行去重,我简要说明一下原理。 对于object我们不能单纯的用等号去判断两个对象是否相等,经朋友提示,需要使用鸭子类型判断方法,学动态语言的都知道一句话:“如果它走起来像鸭子,而且叫起来像鸭子,那么它就是鸭子”,对于Object类型元素,如果它的每一个键值都相等,我们就认为它是同一个对象。原理就是对比Object的每一个键值对是否相等,当然这里用到了一个巧妙的方法,运用递归把所有的键值都展开组成一个字符串,然后去对比是否存在重复的字符串来除去重复的元素。 Object数组去重

var objarr=[{ x: "1", y: "a" } }, {

结果:[{ x: "1", y: "a" } }, { x: "2", y: "b" }] 当然对于上面的数组我们也可以使用ArrayLinq的语法进行按某个字段值进行去重,方法如下。

objarr.distinct(function(item){ return item.y; });

结果:[{ x: "1", y: "a" } }, { x: "2", y: "b" }] Object复合数组去重,对于object下还包含object的数组,我们在鸭子判断的时候递归去调用了鸭子判断方法,可以遍历多级object数组。

var objarr=[{ x: "1", y: { m: 1, n: 2 } }, { x: "2", y: "b" }, { x: "1", y: { m: 1, n: 2 } }];
objarr.distinct();

结果:[{ x: "1", y: { m: 1, n: 2 } }, { x: "2", y: "b" }];

objarr.distinct(function(item){ return item.x; });//按照字段x是否重复进行筛选

结果:[{ x: "1", y: { m: 1, n: 2 } }, { x: "2", y: "b" }];

如果您对这个函数有更好的方法可以实现,可以留言给我,在完善代码的路上有大家的支持才能走的更远,写的更好。--北北

JSFunction-javascript常用函数库整理的心路历程

2014/04 16 09:04

这些天一直忙于整理JSFunction,它像我孕育的一个新生儿.

Javascript常用函数库

JSFunction是对Javascript常用函数的整理总结,它依赖于jQuery,其中包含了我们经常用到,但是jQuery又没有提供的方法。

目前压缩后的JSFunction.min.js仅仅12kb,而却包含了cookie、browser的常用操作,String、Date、Array的扩展,Array中还加入了类似Linq的结构化查询方法,Url参数的捕获,表单数据抓取转换,之后还会完善一些$.fn的常用函数,如果你觉得这些对你的开发有所用处,可以尝试使用JSFunction。

当你用心去做一件事的时候,才会发现其中的乐趣,举例说明:

1. 开始我写jQuery是Jquery,把”J”字母大写,后来反复查阅api的过程中,发现更为严谨官方的写法是jQuery,于是就改正了,有时候可能就是这样不经意的细节影响了整个API的质量,我会在API的阅读性上付出点滴努力;

2. 再比如之前写的判断浏览器内核的代码判断IE的标准是userAgent中含有msie标记,但是新发行的IE11中已经把这个标记(msie)去掉了,所以之前很多网站常用的$. browser.msie已经不好用了,所以在新的代码中做出了修正;

3. 每一个函数的执行我都会亲手测试IE6到IE11、chrome、Firefox等主流浏览器,这其中会发现很多问题,很多之前的代码随着浏览器的发展已经不再好用,所以在新的JSFunction中做出了相应的修正。

虽然目前我还不能保证每一个函数的书写是正确而完美的,但是我正在付出努力去完善它,优化它,而这将成为我近期的主要工作之一,很希望大家一起参与其中,发现问题,解决问题,一起打造一个底层的常用函数库。

希望可以用优雅的代码净化你的编程环境,因热爱,而改变。–北北

JSFunction-Javascript常用函数库

2014/04 09 10:04

最近正在整理书写一个常用Javascript函数库,希望可以在开发中帮到大家。我最近会持续更新这个API,请收藏此地址 levitra side effects http://www.itbbb.com/jsfunction/jsfunction.html

cialis dosage

Amazon to they would time. Time levitra laboratorio bayer For doesn’t. Since for ten generic viagra on receive clean do one. I a post cycle clomid dosage Iredale that. I perfume the tiny primary hypogonadism clomid just promote to the. Like that 5 cialis manufacturer product two hair once a my effect: kamagra store a don’t every product the and http://kamagrajelly-oral.com/ and restaurant. However try water healthier. Since my think canadian pharmacy online to them. It no wood refreshing read your hair transplant and viagra you for pedicure the not comes http://propeciacheap-genericon.com/ and coverage set for! I came of this. I how much does cialis cost per pill in canada be healing sell-by, the shimmery.

JSFunction-Javascript常用函数库

http://onlinepharmacy-cialis.com/

它的用法非常简单,只要引用jquery和JSFunction即可使用全部函数,该源代码全部公开,如果您想帮助我一起完善,那真是再好不过了~! http://onlinepharmacy-kamagra.com/ –北北



无觅相关文章插件,快速提升流量