javascript中的数组去重
1、方法一:双层循环,外层循环元素,内层循环做比较,若相同则跳过,不同则加入结果集中,获取没重复的最右侧的值放入数组中
Array.prototype.distinct = function(){
var arr = this;
var result = [];
var len = arr.length;
for(var i=0;i<len;i++){
for(var j=i+1;j<len;j++){
if(arr[i]===arr[j]){
j = ++i;//出现相同的值,将j置为++i,即进入新一轮的循环
}
}
result.push(arr[i])
}
return result;
}
2、方法二:利用splice直接在原数组中删除
Array.prototype.distinct = function(){
var arr = this,
len = arr.length;
for(var i=0;i<len;i++){
for(var j = i+1; j<len;j++){
if(arr[i]===arr[j]){
arr.splice(i,1);
len--;
j--;
}
}
}
return arr;
}
3、方法三:利用对象属性不能重复的特点去重
Array.prototype.distinct = function(){
var arr = this;
var len = arr.length;
var obj = {}
var result = []
for(var i =0 ;i<len;i++){
//if(!obj[arr[i]]){
if(!obj.hasOwnProperty(arr[i])){
obj[arr[i]] = 1;
result.push(arr[i])
}
}
return result
}
4、方法四:利用数组进行排序
Array.prototype.distinct = function(){
var arr = this;
var len = arr.length;
arr.sort(function(a,b){
return a-b;
})
function loop(index){
if(index>=1){
if(arr[index] === arr[index-1]){
arr.splice(index,1)
}
loop(index-1)
}
}
loop(len-1)
return arr;
}
5、方法五:遍历数组,利用indexOf判断
Array.prototype.distinct = function(){
var arr = this;
var len = arr.length;
var result = [];
arr.forEach(function(currentVal,index,arr){
//arr.map(function(currentVal,index,arr){
var loop = result.indexOf(currentVal)
if(loop === -1){
result.push(currentVal)
}
})
return result
}
6、方法六:es6的set数据结构,set成员都是唯一的,Array.form可以将set类型转化为数组
Array.prototype.distinct = function(){
return Array.from(new Set(this)) //或者使用es6的三点运算符转化为数组 [...new Set(this)]
}
javascript中的数组去重的更多相关文章
- Javascript中的数组去重-indexof方法
在Javascript中,有时我们会用到数组去重.我在这里给大家介绍一下本人认为最简单实用的一种方法-indexOf()去重. var arr = [1,1,1,2,2,2,3,3,4,5,6,2,1 ...
- JavaScript中对象数组去重方法
在一次对后端返回的对象数组的操作时想通过indexOf()或者includes()的方法来实现对对象数组的去重但是行不通,因为用indexOf()返回的都是-1,一下记录两种对象数组(更具指定属性)去 ...
- 【跟着大佬学JavaScript】之数组去重(结果对比)
前言 数组去重在面试和工作中都是比较容易见到的问题. 这篇文章主要是来测试多个方法,对下面这个数组的去重结果进行分析讨论.如果有不对的地方,还请大家指出. const arr = [ 1, 1, &q ...
- 前端开发:Javascript中的数组,常用方法解析
前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...
- Javascript中判断数组的正确姿势
在 Javascript 中,如何判断一个变量是否是数组? 最好的方式是用 ES5 提供的 Array.isArray() 方法(毕竟原生的才是最屌的): var a = [0, 1, 2]; con ...
- javascript中的数组扩展(一)
javascript中的数组扩展(一) 随着学习的深入,发现需要学习的关于数组的内容也越来越多,后面将会慢慢归纳,有的是对前面的强化,有些则是关于前面的补充. 一.数组的本质 数组是按照次序排 ...
- JavaScript中的数组详解
JavaScript中的数组 一.数组的定义 数组是值的有序集合,或者说数组都是数据的有序列表. 二.创建数组 [字面量形式] 1.空数组 var arr=[]; 2.带有元素的数组 var arr= ...
- JavaScript中对数组的操作
原文:JavaScript中对数组的操作 一:数组的使用 1.定义:JavaScript中对数组的定义有两种形式.如: .var arr = [12,3,5,8]; .var arr = new Ar ...
- JavaScript中对数组和数组API的认识
JavaScript中对数组和数组API的认识 一.数组概念: 数组是JavaScript中的一类特殊的对象,用一对中括号“[]”表示,用来在单个的变量中存储多个值.在数组中,每个值都有一个对应的不重 ...
随机推荐
- 第156天:canvas(三)
一.变形 1.1 translate translate(x, y) 用来移动 canvas 的原点到指定的位置 translate方法接受两个参数.x 是左右偏移量,y 是上下偏移量,如右图 ...
- oracle 物化视图 ORA-23413: 表 "xxx"."xx" 不带实体化视图日志
DROP materialized view log on TAB_NAME ; --不是view名,是表名 CREATE MATERIALIZED VIEW LOG ON TAB_NAME W ...
- nvidia 无显示选项怎么设置全屏游戏
转自:2楼 http://nbbbs.zol.com.cn/41/218_408871.html 网上搜的方法: 1.按键盘上那个windows键+R,输入regedit 2.然后就是下面的步骤了 ...
- 【Cogs2187】帕秋莉的超级多项式(多项式运算)
[Cogs2187]帕秋莉的超级多项式(多项式运算) 题面 Cogs 题解 多项式运算模板题 只提供代码了.. #include<iostream> #include<cstdio& ...
- redis2.4.conf配置文件中文释意
# Redis示例配置文件 # 注意单位问题:当需要设置内存大小的时候,可以使用类似1k.5GB.4M这样的常见格式: # # 1k => 1000 bytes # 1kb => 1024 ...
- poj 1945 Power Hungry Cows A*
Description: 就是给你一个数,你可以把它自乘,也可以把他乘或除以任意一个造出过的数,问你最多经过多少次操作能变换成目标数 思路:这题真的不怎么会啊.n = 20000,每一层都有很 ...
- Linux下调整根目录的空间大小
原文 一.目的 在使用CentOS6.3版本Linux系统的时候,发现根目录(/)的空间不是很充足,而其他目录空间有很大的空闲,所以本文主要是针对现在已有的空间进行调整.首先,先来查看一下系统的空间分 ...
- php桶排序简单实现
桶排序中最重要的环节是映射函数. 初步学习桶排序的过程中,映射比较简单.实现代码如下: /** * 第一种桶排序的办法,每个桶存储相同值的数据 * */ function bucketSort($no ...
- Eclipse 反编译插件
很多时候在项目开发中,没有源码是挺痛苦的一件事情,我们要知其然,更要知其所以然,但是有些公司就是不提供源码,怎么办? 不怕,下面教大家在Eclipse下安装反编译插件,方便好用. 好了,点 点 点 都 ...
- Excel 报表导入导出
使用 Excel 进行报表的导入导出,首先下载相关的 jar 和 excel util. Excel Util 下载地址 引入依赖: <!-- poi office --> <dep ...