数组去重总结

本地部署gradle 在部署CAS构建执行包时,如果按照CAS的官方命令gradlew clean build,如果系统没安装过gradle,这个步骤将会从网上下载gradle,但是进度非常慢,耗时很长。为了更快地完成项目构建,我们可以直接在本地部署好gradle,节省一点时间。 阅读详情

Methods 1: 思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

function unique(arr){

 var res = [arr[0]];

 for(var i=1; i<arr.length; i++){

  var repeat = false;

  for(var j=0; j<res.length; j++){

   if(arr[i] === res[j]){

    repeat = true;

    break;

   }

  }

  if(!repeat){

   res.push(arr[i]);

  }

 }

 return res;

}

console.log('------------方法一---------------');

 

console.log(unique([1,1,2,3,5,3,1,5,6,7,4]));

Methods 2: 思路:先将原数组排序,在与相邻的进行比较,如果不同则存入新数组。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

function unique2(arr){

 var arr2 = arr.sort();

 var res = [arr2[0]];

 for(var i=1; i<arr2.length; i++){

  if(arr2[i] !== res[res.length-1]){

   res.push(arr2[i]);

  }

 }

 return res;

}

 

console.log('------------方法二---------------');

 

console.log(unique2([1,1,2,3,5,3,1,5,6,7,4]));

Methods 3: 利用对象属性存在的特性,如果没有该属性则存入新数组。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

function unique3(arr){

 var res = [];

 var obj = {};

 for(var i=0; i<arr.length; i++){

  if( !obj[arr[i]] ){

   obj[arr[i]] = 1;

   res.push(arr[i]);

  }

 }

 return res;

}

 

console.log('------------方法三---------------');

 

console.log(unique3([1,1,2,3,5,3,1,5,6,7,4]));

Methods 4: 利用数组的indexOf下标属性来查询。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

function unique4(arr){

 var res = [];

 for(var i=0; i<arr.length; i++){

  if(res.indexOf(arr[i]) == -1){

   res.push(arr[i]);

  }

 }

 return res;

}

 

console.log('------------方法四---------------');

 

console.log(unique4([1,1,2,3,5,3,1,5,6,7,4]));

Methods 5: 利用数组原型对象上的includes方法。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

function unique5(arr){

 var res = [];

  

 for(var i=0; i<arr.length; i++){

  if( !res.includes(arr[i]) ){ // 如果res新数组包含当前循环item

   res.push(arr[i]);

  }

 }

 return res;

}

 

console.log('------------方法五---------------');

 

console.log(unique5([1,1,2,3,5,3,1,5,6,7,4]));

Methods 6: 利用数组原型对象上的 filter 和 includes方法。

?

1

2

3

4

5

6

7

8

9

10

11

12

function unique6(arr){

 var res = [];

  

 res = arr.filter(function(item){

  return res.includes(item) ? '' : res.push(item);

 });

 return res;

}

 

console.log('------------方法六---------------');

 

console.log(unique6([1,1,2,3,5,3,1,5,6,7,4]));

Methods 7: 利用数组原型对象上的 forEach 和 includes方法。

?

1

2

3

4

5

6

7

8

9

10

11

12

function unique7(arr){

 var res = [];

  

 arr.forEach(function(item){

  res.includes(item) ? '' : res.push(item);

 });

 return res;

}

 

console.log('------------方法七---------------');

 

console.log(unique7([1,1,2,3,5,3,1,5,6,7,4]));

Methods 8: 利用数组原型对象上的 splice 方法。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

function unique8(arr){

 var i,

  j,

  len = arr.length;

 for(i = 0; i < len; i++){

  for(j = i + 1; j < len; j++){

   if(arr[i] == arr[j]){

    arr.splice(j,1);

    len--;

    j--;

   }

  }

 }

 return arr;

}

 

console.log('------------方法八---------------');

 

console.log(unique8([1,1,2,3,5,3,1,5,6,7,4]));

Methods 9: 利用数组原型对象上的 lastIndexOf 方法。

?

1

2

3

4

5

6

7

8

9

10

11

function unique9(arr){

 var res = [];

 for(var i=0; i<arr.length; i++){

  res.lastIndexOf(arr[i]) !== -1 ? '' : res.push(arr[i]);

 }

 return res;

}

 

console.log('------------方法九---------------');

 

console.log(unique9([1,1,2,3,5,3,1,5,6,7,4]));

Methods 10: 利用 ES6的set 方法。

 

1

2

3

4

5

6

7

8

function unique10(arr){

 //Set数据结构,它类似于数组,其成员的值都是唯一的

 return Array.from(new Set(arr)); // 利用Array.from将Set结构转换成数组

}

 

console.log('------------方法十---------------');

 

console.log(unique10([1,1,2,3,5,3,1,5,6,7,4]));

 

 

 

Methods 11: 利用 ES6的...和set 方法。 

 

 function unique11(arr){
    return [... new Set(arr)]; 
} 

农业生产AI决策系统架构设计解密:数据层-模型层-应用层核心逻辑 想象一下,在一个炎热的夏日,传统农田里的农民伯伯正满头大汗地检查每一株玉米是否缺水;而几公里外的智慧农场里,一位年轻农民正在空调房里滑动手机屏幕,看着AI系统自动生成的灌溉计划——这就是农业生产AI决策系统带来的改变。本文的目的,就是要揭开这个"智能农业大脑"的面纱,详细讲解它的"身体构造"(架构设计)和"工作原理"(核心逻辑)。我们将聚焦系统最核心的三个部分:数据层(收集农田信息)、模型层(分析信息并思考决策)和应用层(将决策告诉农民)。 阅读详情

相关推荐

利用ENVI处理TIF文件,把多个tif整合到一个完整的tif,例如2003-2011年的tif整合到一个tif上。

利用ENVI处理TIF文件,把多个tif整合到一个完整的tif,例如2003-2011年的tif整合到一个tif上。

unique_sir的博客 1万+

js数组去重

1、利用ES6中 Set去重 ES6提供了新的数据结构Set,Set函数可以接受一个数组(或类数组对象)作为参数来初始化。 Array.from方法可以将Set结构转换为数组结果,而Set结果是不重复的数据集,因此能够去重。 2、利用ES6中 Set 和解构赋值去重 …扩展运算符 (…可用来转换为数组对象) 问题:因为js是判断对象地址是否相同,而不是对象内容,所以每个空对象都是...

weixin_45519474的博客 2459

VCL for PHP,Konopka Signature VCL Controls (Raize Components 6.2.3) for Delphi 10.4

The Raize Components suite includes a variety of interface design tools for Delphi programming language and C ++ Builder, which includes over 125 VCL controls and over 100 different tools for creating...

weixin_42137539的博客 852

JS去重的几种方法

HTML基础 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;

Duanjiani的博客 1万+

双向全桥隔离dc-dc变换器(DAB)

在全功率范围内,零电压开通优化调制方法能够实现双向全桥隔离dc-dc变换器所有开关的零电压开通,来提升变换器的效率,但其调制模式不连续。当变换器两端电压不匹配时,变换器的电流应力和回流功率将增加,软开关范围将变窄,变换器的效率显著降低。在轻载时,这两种电流优化调制方法采用相同的调制模式;在重载时,最小电流有效值调制方法具有两种调制模式,而最小电流应力调制方法只有一种。双向全桥隔离dc-dc变换器(DAB)和Buck/Boost不同,该变换器通过交流电感进行功率传输,其调制和控制不适合直接借鉴已有的研究。

m0_59329334的博客 3532

Modscan32连接上了却没数据?一文拆解所有报错(从“Device NOT CONNECTED”到“Checksum Error”)

本文深入解析Modscan32连接异常问题,从状态栏报错到数据异常,提供系统化的诊断思路和解决方案。涵盖物理层问题、配置参数错位、端口占用冲突等常见故障,帮助工程师快速定位和解决Modbus通信中的各类错误。

weixin_30384217的博客 397

js数组去重(9种方法),你都会了吗?

九种数组去重的方式和详解(包含对象数组去重)

前端菜鸟好先森的博客 8万+

C++常见面试题总结

C++常见面试题总结

xu_fu_yong的专栏 8万+

JS使用map去重,去除数组中某个元素相同的元素

if (!

cyj0919的博客 1082

【人工智能之深度学习】23. 推荐系统升级实战:LightGCN重构协同过滤全流程(Amazon-Beauty数据集+完整代码)

摘要:传统协同过滤(如矩阵分解)在电商推荐中存在三大痛点:忽略用户-物品高阶关联、交互数据稀疏导致冷启动、特征工程依赖人工设计。本文基于Amazon-Beauty数据集(含20万+用户交互),用LightGCN图神经网络重构推荐系统:1)构建用户-物品二部图,通过3层图卷积捕捉“用户→物品→用户”的多跳关联;2)采用BPR负采样损失优化嵌入学习,缓解数据稀疏;3)端到端输出用户/物品嵌入,无需人工特征。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1493

易盾滑块的js逆向分析

基于易盾的滑块验证码进行逆向分析,最种实现全系列的验证码逆向,包括滑块、点选、推理拼图等多种类型。

shanf7921的博客 3万+

JavaScript中数组去重的几种方法

js数组常用的几种去重方法,供大家参考,有问题请指正

m0_72838183的博客 2362

基于传感器数据实现火灾报警预测分析

火警 系统当检测到烟雾、火灾、一氧化碳或其他与火灾有关或一般通知的紧急情况时,向人们发出警告

DT程序员的博客 722

js对象数组去重,简单数组去重

JavaScript对象数组去重一、对象数组去重方式一二、对象数组去重方式二三、简单类型的数组去重 一、对象数组去重方式一 使用reduce函数。 let arr = [ { key:'1', name:'林青霞' }, { key:'2', name:'张三丰' },

weixin_43242112的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

vue数组去重 数组对象去重

常见普通数组去重 利用Es6 Set去重 unique(arr){ return Array.from(new Set(arr)) }, 利用filter unique(arr){ return arr.filter((item,index,arr)=>{ return arr.indexOf(item,0) === index; }); }, 利用双for循环,然后solice去重 unique(arr){

z1010017573的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数组去重,对象去重,对象数组去重

数组去重:1. 双层循环+splice 2.set() 3.srot() 4.foreach+indexOf() 5.filter()+indexOf() 6. forEach+includes() 7.hasownProperty() 8.reduce+includes() 对象数组去重:1.双层循环+splice 2.for+新数组 3.利用对象属性 4.for of +find() 5.filter()+findIndex() 6.forEach+some() 7.reduce() 8.Map()

Realizee的博客 4069

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

数组去重以及数组对象去重方法总结

数组去重以及数组对象去重方法总结一、数组对象去重1、reduce方法2、利用原生js+空对象+空数组3、利用原生js+标志位+空数组4、利用双指针思想+splice方法二、数组去重1、利用新数组+标志位2、排序+新数组+相邻比较3、新对象+新数组4、新数组+indexOf5、新数组+includes6、新数组+filter+includes7、新数组+foreach+includes8、 双指针思想+splice9、新数组+lastIndexOf10、ES6的set 方法 一、数组对象去重 1、reduce

丑小鸭变黑天鹅的博客 6977

最实用的数组去重方法、数组的相邻元素的去重方法和对象数组的去重方法

实现的效果: 数组的相邻元素去重: const orginArr=[1,1,2,3,3,4,4,5,5,6,5,4,3,2,2,1,1], const unique = (arr) => { let newArr=[arr[0]] for(let i=1;i<arr.length;i++){ if(arr[i]!==newArr[newArr.length-1]){ ...

Zeng__Yi的博客 2365

vue数组去重

vue数组去重 最近在开发中遇到了需要对数组进行去重操作,在这里记录一下基本的去重方法 数组去重 对于简单的数组进行去重,可以使用Set集合,基本上可以对所有数据类型进行去重 test() { const arr = [true, 1, 'str', 's', 2, false, true, {}, [], function() {}, {}, [1], [2], { obj: 1 }, 2, 'str'] const qc = [...new Set(arr)] con

野原一家的博客 2万+

数组去重那些事(如何进行数组的去重)

数组去重 最近在学习时,偶然看到一篇前端大牛的关于数组去重的文章,吸收消化后作为自己的学习笔记记录 常规方法(双层循环) 先上代码: function unique(a){ var res =[]; for(var i=0,len=a.length;i<len;i++){ var item =a[i]; //console.log(item); console.log(res.length); for(var j=0,JLen=res.length;j<

前端水獭的博客 3420

数组去重与数组合并去重

数组去重与数组合并去重 数组去重 (1)indexOf()方法 let arr = [4, 1, 3, 2, 4, 1, 2] arr = removeRepeat(arr) console.log(arr) // [ 1, 2, 3, 4 ] function removeRepeat(val){ let newArr = [] val.forEach( item => { if(newArr.indexOf(item) == -1){

我是段段的博客 4225

数组去重,数组合并去重

方法一: 双层循环,外层循环元素,内层循环时比较值 如果有相同的值则跳过,不相同则push进数组 Array.prototype.distinct = function(){ var arr = this, result = [], i, j, len = arr.length; for(i = 0; i &lt; len; i++){ for(j = i + 1;...

WWW_share8的博客 4309

集合去重 数组去重

一,普通数组去重 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i &lt; array.length; i++){ if(tem...

Lehman的博客 821

JS数组去重,对象去重

简单数组去重: { const a = [1, 3, 4, 1, 5, 2, 6, 7, 8, 3] const b = a.filter((item, index, self) => self.indexOf(item) === index) console.log(b) //[1, 3, 4, 5, 2, 6, 7, 8] } 实...

qq_35363709的博客 602

数组去重,封装数组去重

1. 相对于数组本身进行去重 var arr = [15,35,27,15,29,31,35,15]; for(var i = 0; i < arr.length; i++){ for(var j = i + 1; j < arr.length; j++){ if(arr[i]==arr[j]){ arr.splice(j,1) ...

HelloWord176的博客 857

JavaScript——不同类型数组去重(简单数组去重、对象数组去重)

1. 简单数组去重 1.1 new Set() 去重 MDN中对于Set的释义:Set对象是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即 Set 中的元素是唯一的。 执行Set后返回的是一个Set结构,是类数组 1.1.1 Array.from 将类数组转换成数组 因为Set结构不是数组,我们可以通过Array.from()的形式将其转换成数组 实例一: Set + Array.from去重 let normalArr = [1,2,3,4,5,3,4,4,'a',

我是我 2246
下一篇: js中slice,substring,substr的区别
wang2021wang
博客等级 码龄15年 6粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值