博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
YUI Array 之dedupe(快速去重)
阅读量:4348 次
发布时间:2019-06-07

本文共 1312 字,大约阅读时间需要 4 分钟。

YUI.Array.dedupe函数,如果传参为有length属性,返回一个去除掉重复项('1’ 与1 | true 与'true’认为相等)的参数数组副本,如果传参的length为undefined,那么返回一个空数组[],如果传参没length属性,抛出一个类型错误

数组去重YArray.dedupe = Lang._isNative(Object.create) ? function (array) {    var hash    = Object.create(null),        results = [],        i, item, len;    for (i = 0, len = array.length; i < len; ++i) {        item = array[i];        if (!hash[item]) {            hash[item] = 1;            results.push(item);        }    }    return results;} : function (array) {    var hash    = {},        results = [],        i, item, len;    for (i = 0, len = array.length; i < len; ++i) {        item = array[i];        if (!hasOwn.call(hash, item)) {            hash[item] = 1;            results.push(item);        }    }    return results;};

1.  在一个对象obj中 obj[1] === obj['1’]    obj[true] === obj[‘true’]

2.  这个函数不会去比较数据类型,如果一个值在空对象中没值,则赋值为1,并将它push进数组,下次有相同的值,直接略过

3.  在现代浏览器中,可以直接调用Obejct.create(),构建一个没有原型的对象,但在ie8及以下中,直接创建一个{},每次还要用hasOwnProperty去检测是否是{}的属性,再去执行2的操作,速度减慢

对象var y = YUI()var newArr = y.Arrayarr = [1,2,3,4,5,1,'1',true.'true']str = '12345671'obj = {
name: 'fsy'}arr1 = newArr.dedupe(arr) // ===> [1,2,3,4,5,true]arr2 = newArr.dedupe(str) // ====> [“1”,”2”,”3”,”4”,”5”,”6”,”7”]arr3 = newArr.dedupe(obj) // ====> []

 

 

 

转载于:https://www.cnblogs.com/fsy0718/p/3287875.html

你可能感兴趣的文章
《代码大全》学习摘要(五)软件构建中的设计(下)
查看>>
C#检测驱动是否安装的问题
查看>>
web-4. 装饰页面的图像
查看>>
微信测试账户
查看>>
算法练习题
查看>>
学习使用Django一 安装虚拟环境
查看>>
Hibernate视频学习笔记(8)Lazy策略
查看>>
CSS3 结构性伪类选择器(1)
查看>>
IOS 杂笔-14(被人遗忘的owner)
查看>>
前端基础之BOM和DOM
查看>>
[T-ARA/筷子兄弟][Little Apple]
查看>>
编译Libgdiplus遇到的问题
查看>>
【NOIP 模拟赛】Evensgn 剪树枝 树形dp
查看>>
java学习笔记④MySql数据库--01/02 database table 数据的增删改
查看>>
程序员最想得到的十大证件,你最想得到哪个?
查看>>
【MyBean调试笔记】接口的使用和清理
查看>>
07 js自定义函数
查看>>
jQueru中数据交换格式XML和JSON对比
查看>>
form表单序列化后的数据转json对象
查看>>
[PYTHON]一个简单的单元測试框架
查看>>