JS学习笔记——数组去重
<script type="text/javascript"> //indexOf”是ECMAScript5方法,IE8以下不支持,需多写兼容低版本浏览器代码。
Array.prototype.indexOf=Array.prototype.indexOf|| function(item){
for(var i=0;i<this.length;i++)
{
if(this[i]===item)
{
return i;
}
}
return -1;
}
var obj={
name:'312'
}
function newobj(){ }
var a=[0,0,new String(1), new Number(1),obj,obj,new newobj(),new newobj()]; Array.prototype.forEach = Array.prototype.forEach || function(callback, thisArg) {
if (!callback || typeof callback !== 'function') return; for (var i = 0, j = this.length; i < j; i++) {
callback.call(thisArg, this[i], i, this);
}
} function removeDuplicatedItem1(arr)
{
var ret=[];
for(var i=0;i<arr.length;i++)
{
if(ret.indexOf(arr[i])===-1)
{
ret.push(arr[i]);
}
}
return ret;
} // 0 1 1 [object object] [object object ][object object] function removeDuplicatedItem2(arr)
{
var ret=[];
arr.forEach(function(e,i,arr){
if(arr.indexOf(e)===i)
ret.push(e);
});
return ret;
} //// 0 1 1 [object object] [object object ][object object] function removeDuplicatedItem3(ar) {
var ret = [],
end;
ar.sort();
end = ar[0];
ret.push(ar[0]); for (var i = 1; i < ar.length; i++) {
if (ar[i] !== end) {
ret.push(ar[i]);
end = ar[i];
}
} return ret;
}// 0 1 1 [object object] [object object ][object object] //上述都做了两次循环 因此需要优化 function removeDuplicatedItem4(arr)//unique([ new String(1), new Number(1) ]) 无法判断
{
var tem={};
var ret=[];
for(var i=0;i<arr.length;i++)
{
var item=arr[i];
var key=typeof(item)+item; //因为对象只能存放字符串,所以要区分 1 '1'
if(!tem[key])
{
tem[key]=1;
ret.push(item);
}
}
return ret;
} //0 1 [object object] </script>
JS学习笔记——数组去重的更多相关文章
- JS学习笔记-数组
ECMAScript中没有提供类和接口等的定义,但它却是一门面向对象的语言,由于它能够通过其它 方式实现类似高级语言的面向对象功能,这些内容将在后面的文章中进行一步步的总结.此篇仅对JS中对象作简要说 ...
- js学习笔记——数组方法
join() 把数组中所有元素转化为字符串并连接起来,并返回该字符串, var arr=[1,2,3]; var str=arr.join("#"); //str="1# ...
- 【学习】js学习笔记---数组对象
一.属性 length 数组的大小.数组的length属性总是比数组中定义的最后一个元素的下标大一,设置属性length的值可以改变数组的大小.如果设置的值比它的当前值小,数组将被截断,其尾部的元素将 ...
- vue.js 学习笔记3——TypeScript
目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...
- 2019-4-29 js学习笔记
js学习笔记一:js数据类型 1:基本数据类型 number类型(整数,小数) String类型 boolean类型 NaN类型其实是一个nu ...
- 基于jquery的插件turn.js学习笔记
基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...
- 【转】Backbone.js学习笔记(二)细说MVC
文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Bac ...
- Node.js学习笔记(2):基本模块
Node.js学习笔记(2):基本模块 模块 引入模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在No ...
- WebGL three.js学习笔记 加载外部模型以及Tween.js动画
WebGL three.js学习笔记 加载外部模型以及Tween.js动画 本文的程序实现了加载外部stl格式的模型,以及学习了如何把加载的模型变为一个粒子系统,并使用Tween.js对该粒子系统进行 ...
随机推荐
- YARN资源调度策略之Capacity Scheduler
背景 yarn默认使用的是最简单的FIFO调度器,即一个default队列,所有用户共享,分配资源也是先到先得,没有优先级之分.有时一两个任务就把资源全占了,其他任务吃不到资源造成饥饿,显然这样的资源 ...
- java接收数据接口
1.数据接收接口: 这个可以考虑最简单的Servlet方法,而且效率较高: import java.io.PrintWriter;import java.text.SimpleDateFormat;i ...
- Windows系统操作指令汇总
CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本.文件系统版本) 1. appwiz.cpl:程序和功能 2. calc:启动计算器 3. certmgr ...
- [Git]01 如何安装和配置
简单地说,Git 究竟是怎样的一个系统呢? 请注意,接下来的内容非常重要,若是理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余.在开始学习 Git 的时候,请不要尝试把各种概 ...
- ICDM评选:数据挖掘十大经典算法
原文地址:http://blog.csdn.net/aladdina/article/details/4141177 国际权威的学术组织the IEEE International Conferenc ...
- spring注解读取json文件
开发时候在接口没有提供的时候,可以用json文件提前模拟接口数据 1.service层 package com.syp.spring.service; import java.io.File; imp ...
- 573. Squirrel Simulation
Problem statement: There's a tree, a squirrel, and several nuts. Positions are represented by the ce ...
- libpng处理png图片(一)
一:libpng库的编译 环境:windows10 + VS2013 需要下载:libpng, zlib两个库 下载地址: libpng:http://libmng.com/pub/png/libpn ...
- Linux 01 Liunx目录结构及文件基本操作
Linux目录结构及文件基本操作 1.Linux的文件组织目录结构(遵循FHS标准) FHS(Filesystem Hierarchy Standard)标准:多数Linux版本采用这种文件组织形式, ...
- python中从文件中读取数据2
#average7.py 文件中有多行,且每行有多个数字用逗号隔开 def main(): fileName = input("What file are numbers in?" ...