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中的一类特殊的对象,用一对中括号“[]”表示,用来在单个的变量中存储多个值.在数组中,每个值都有一个对应的不重 ...
随机推荐
- PHP之implode()方法
implode — 将一个一维数组的值转化为字符串 string implode ( string $glue , array $pieces ) string implode ( array $pi ...
- LoadRunner脚本增强技巧之手动关联
个人认为LoadRunner的手动关联技巧可以看做参数化的一种,区别在与获取参数的来源不同. 一般的参数化:把脚本中一个写死的数值或者字符串用一个变量参数来代替,每次迭代的时候,从本地文件或者数据库中 ...
- Struts按着配置文件的加载的顺序,后面文件和前面文件相同的配置,后面的会把前面的文件的值覆盖
Struts按着配置文件的加载的顺序,后面文件和前面文件相同的配置,后面的会把前面的文件的值覆盖
- Python 模板 Jinja2
Python 模板 Jinja2 模板 要了解Jinja2,就需要先理解模板的概念.模板在Python的web开发中广泛使用,它能够有效的将业务逻辑和页面逻辑分开,使代码可读性更强.更加容易理解和维护 ...
- SAM I AM UVA - 11419(最小顶点覆盖+输出一组解)
就是棋盘问题输出一组解 https://blog.csdn.net/llx523113241/article/details/47759745 http://www.matrix67.com/blog ...
- [洛谷P5147]随机数生成器
题目大意:$$f_n=\begin{cases}\frac{\sum\limits_{i=1}^nf_i}n+1&(n>1)\\0&(n=1)\end{cases}$$求$f_n ...
- Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1)
A 模拟 B 发现对于每个连通块,只有为完全图才成立,然后就dfs C 构造 想了20分钟才会,一开始想偏了,以为要利用相邻NO YES的关系再枚举,其实不难.. 考虑对于顺序枚举每一个NO/YES, ...
- 代码收藏系列--php--加载sql文件并解析成数组
php加载sql文件,解析成以分号分割的数组.(支持存储过程和函数提取,自动过滤注释) /** * 加载sql文件为分号分割的数组 * <br />支持存储过程和函数提取,自动过滤注释 * ...
- C++之高级编程20170914
/*************************************************************************************************** ...
- C++之基础知识20170830
/*************************************************************************************************** ...