当前位置:首页 > 日记 > 正文

Javascript数组从慢到快从传播到简单(优化)。

Javascript数组从慢到快从传播到简单(优化)。
在数组的操作中经常会遇到删除重复项的问题,下面简要介绍数组的移除方法。

IndexOf减量

array.prototype.unique1 =函数(){
var arr = { };
对于(var i = 0;i < this.length;i++){
var =这个{ };
如果(arr.indexof(项)= 1){
Arr.push(项);
}
}
报酬;
}
{ 1、2、3、4、3,4,3,1,'34 ',2 }。unique1(); / / { 1, 2, 3,4
然而,在IE6-8,返回数组的方法是不存在的(虽然这被认为是O点老话题(一_ u)O ~),但是,程序员必须编写一个IndexOf方法:

VaR指标= { }。indexOf函数(ARR,项){
返回arr.indexof(项目);
}:
功能指标(ARR,项){
对于(var i = 0;i < arr.length;i++){
如果(ARR {我} = {项目)
还我;
}
}
返回- 1;
}
array.prototype.unique2 =函数(){
var arr = { };
对于(var i = 0;i < this.length;i++){
var =这个{ };
如果(arr.indexof(项)= 1){
Arr.push(项);
}
}
报酬;
}
{ 1、2、3、4、3,4,3,1,'34 ',2 }。unique2(); / / { 1, 2, 3,4
指数也可以采取这种思维方式。

array.prototype.unique3 =函数(){
var arr = { { 0 } };
对于(var i = 1;i < this.length;i++)
{
如果(this.indexof(这{我})= =我){
Arr.push(本{我});
}
}
报酬;
}
{ 1、2、3、4、3,4,3,1,'34 ',2 }。unique3(); / / { 1, 2, 3,4
哈希减量
上述指标的正确性是没有问题的,但在性能、双周期会降低性能。然后我们使用哈希。

array.prototype.unique4 =函数(){
var arr = { };
var散列{ };
对于(var i = 0;i < this.length;i++){
var =这个{ };
var关键字= typeof(项目)+项目
如果(散列{ }!= 1){
Arr.push(项);
散列{ } = 1;
}
}
报酬;
}
{ 1、2、3、4、3,4,3,1,'34 ',2 }。unique4(); / / { 1, 2, 3,4
其核心是建立一个哈希对象替代指标。空间换时间。请注意,在Javascript中,对象的核心价值只能是一个字符串(当然,6提供地图数据的结构,它类似于一个对象和一个键值对的集合,但是关键的范围不仅仅是一个字符串,和所有类型的值,包括对象,可以作为键。换句话说,物体的结构提供了一个字符串值的对应关系,和地图的结构提供了一种价值值对应,更完美的哈希结构了。)所以无功关键= typeof(项)+项目是需要区分数字1和1之间的字符串。
所以如果你想'4'and 4被认为是相同的(在其他方面)

array.prototype.unique5 =函数(){
var arr = { };
var散列{ };
对于(var i = 0,len = this.length;我< len;i++){
如果(!散列{此{ } }){
Arr.push(本{我});
哈希{此} =真的;
}
}
报酬;
}
{ 1、2、3、4、3,4,3,1,'34 ',2 }。unique5(); / / { 1, 2, 3,4
减肥后的分类

array.prototype.unique6 =函数(){
This.sort();
var arr = { { 0 } };
对于(var i = 1;i < this.length;i++){
如果({ { })!= ARR { arr.length-1 }){
Arr.push(本{我});
}
}
报酬;
}
{ 1、2、3、4、3,4,3,1,'34 ',2 }。unique6(); / / { 1, 2, 3,34
顺序数组,然后将相邻的两值,JS机排序方法排序时使用,所以它是非常快的。这种方法的缺点是只有一点,和字符在字符编码整理。所以你会看到前面2排10。但这并不影响体重。然而,解决排序问题是排序方法接受一个参数,这个参数是一个方法:

(value1,value2功能比较){
如果(value1 value2 P<0.05){
返回- 1;
} else if(value1 value2 { >)
返回1;
{人}
返回0;
}
}
{ 1,2,5,2,10,3,20 }。排序(比较); / / { 1, 2, 2,3, 5, 10,20 }
集减量
6提供了一种新的数据结构,集。它类似于数组,但成员的值是唯一的,没有重复的价值。现在的浏览器完全支持,和服务器的节点也被支持。

array.prototype.unique7 =函数(){
返回array.from(新(这));
}
{ 1、2、3、4、3,4,3,1,'34 ',2 }。unique7(); / / { 1, 2, 3,4
方法库
A method library Underscore.js is recommended, which is very popular in node or browser JS.

const _ =需要('underscore);
_。uniq({ 1, 2, 1,3, 1, 4 }); / / { 1, 2, 3,4 }
测试时间
所有这些方法都可以用一种简单的方法来测试花费的时间,然后为每种方法选择最好的方法。

console.time(测试);
{ 1、2、3、4、3,4,3,1,'34 ',2 }。unique7();
Console.timeEnd(测试);
= = > vm314:3测试:0.378ms
为了使数据变大,随机创建100万个数字:

var arr = { };
var = 0;
对于(var i = 0;i < 1000000;i + +){
Num = math.floor(Math.random)*(100);
Arr.push (Num);
}
console.time(测试);
arr.unique7();
Console.timeEnd(测试);
以上是Javascript数组由萧边提出,要由慢到快,从复杂到简单。希望能对你有所帮助。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您支持网站。

相关文章

Javascript是一种简单的方法来获得CSS级

Javascript是一种简单的方法来获得CSS级

级联,外链,是一种,互联,方式,{在}式收购 测试 无功odiv = document.getelementbyid('div1 '); / /得到的元标签的风格,也就是去DIV1 console.log(odiv。风格。背景); / /让我们可以得到行风格 {互连样式获取} U3000 U3000 U3000 U3000 U3000…

王键三攻城战游戏指南

王键三攻城战游戏指南

攻城战,指南,游戏,电脑软件,王键三,王键三新;朱璐中远;版本带来了城市的战争游戏,让浩气盟与恶人两力量参与现场;竞争了。在沙盘游戏最初的势力划分,高尚的精神和每个地图邪恶的一半,一个基地,和机会的草坪是攻城战,对,每个星期二和星期四晚上攻城的…

PowerPoint2010使用动画笔刷快速设

PowerPoint2010使用动画笔刷快速设

动画,动画效果,设置,笔刷,快速,您还记得Office中的格式画笔,它可以将对象的格式复制到其他对象中。在PowerPoint 2010中,添加了一个有用的工具动画画笔,我们可以使用它快速设置动画效果。 将动画效果复制到单个对象上 1,如果A是一个已经设置…

MySQL错误:对附近使用正确的语法类

MySQL错误:对附近使用正确的语法类

服务器,语法,错误,类型,解决方案,本文阐述了MySQL错误:为使用近供你参考你型= innodb.share语法正确的MySQL服务器版本的解决方案,如下: 首先,问题: 当使用SQL语句构建表时,MySQL报告了以下错误: 您的SQL语法有一个错误;请检查手册 1。 两。解…

MySQL启动错误MySQL服务器PID文件

MySQL启动错误MySQL服务器PID文件

文件,服务器,启动错误,找不到,电脑软件,昨天解决了数据库跨权限操作,今天打开项目突然出错,然后重启数据库,错误的mysql服务器pid文件可以!找不到!,命令行数据库的链接也不能连接到本地MySQL服务器通过插座 /无功/ lib / MySQL / MySQL。袜子(2),在…

MySQL5.7.17winx64安装配置方法教

MySQL5.7.17winx64安装配置方法教

方法,教程,安装配置,电脑软件,mysql-5.7.17-winx64.zip模式的Windows安装 1。在官方网站上下载压缩文件。 2。解压到一个文件夹,这里我用D: MySQL显示 三.在建立一个新的my.ini配置文件: mysql-5.7.17-winx64 MySQL 黄色背景色需要用它自己…

编写的小程序,在微信wxss文件不文件

编写的小程序,在微信wxss文件不文件

文件,方法,程序,电脑软件,wxss,少文件编译成一个微信的小程序wxss文件 2016年9月21日,微信的小程序的内部测试正式开启,微信生态下,微信的小程序,这是准备跑出去,引起了广泛的关注和引爆朋友圈。在这样一个炎热的气氛,作为前端开发的我,也悄然尝…

js仿百度转换皮肤功能(HTML+CSS)

js仿百度转换皮肤功能(HTML+CSS)

百度,转换,功能,电脑软件,js,js仿百度皮肤(皮肤效果:从div切换,选择你想要的图片,作为背景,保存) 关键点:cookie保存状态 HTML代码: 换肤 热 停止 CSS代码: { * 保证金:0px; 填料:0px; } { #头 身高:40px; 宽度:100%; 背景:# 000000; } { 文字装饰:无; } …

切换动画效果

切换动画效果

动画效果,电脑软件,由于博客作者的懒惰,网页的绘制很粗糙,但没关系,因为我主要讲的是如何制作图片动画切换。 观点:我认为每个人都有访问淘宝或其他网站,通常会有图片动画切换效果,这是怎么实现的博客我,技术不是很好,做一个简单的例子! 首先,画面…

如何在Excel2003中打印指定的单元

如何在Excel2003中打印指定的单元

单元,如何在,电脑软件,1。区域设置法 这是每次打印固定区域的最好方法。 启动Excel2003(其他版本,请复制操作),打开相应的工作簿文件,选择该地区打印,执行文件具有,打印区域具有,设置打印区域命令。在未来,当你需要打印的区域,按下常用工具栏上的;打…

婚姻中颜色和颜色的结合

婚姻中颜色和颜色的结合

颜色,婚姻,电脑软件,本教程介绍了一种比较均匀的色彩融合方法。一般过程:首先,对图片进行简单的美化处理,然后用梯度映射或彩色/饱和度合成一个单音,然后添加暗视角等。 原 最终效果 1、打开原材料,创建调音台调音台,调整蓝色,参数设置如图1,效果…

签名及与战斗有关的签名经典签名

签名及与战斗有关的签名经典签名

经典,电脑软件,生活需要努力去看不同的风景。在签名中与斗争有关的句子是什么请享受你挣扎的萧边签名。 努力签名推荐 1)只要有明天,它就永远是起跑线。 2)没有尽头,希望在角落里。 3)抱最大的希望,做最坏的计划,尽最大努力。 4)你不勇敢,没有人…