数组去重总结

别再傻傻分不清了!STM32定时器里Prescaler和ClockDivision到底有啥区别? 本文深入解析STM32定时器中Prescaler和ClockDivision的区别与应用场景。Prescaler作为定时器的'心跳调节器',决定计数频率;而ClockDivision则是输入捕获的'抗噪滤镜',有效抑制高频噪声。通过实战案例和示波器实测数据,帮助开发者避免常见配置误区,提升嵌入式系统稳定性。 阅读详情

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)]; 
} 

【部署】Kimi 接入OpenClaw完整步骤及关键注意事项 本文详细介绍了如何将Kimi AI接入OpenClaw系统的完整步骤。首先需确保环境满足OpenClaw版本要求和系统支持,然后通过配置向导完成本地网关设置和Kimi模型接入,包括API密钥配置。文章提供了详细的命令操作和界面截图指导,并重点说明了安全警告处理、服务状态检查、API密钥有效性验证等关键注意事项。最后还展示了Kimi流量消耗明细和问题排查方法,帮助用户顺利完成接入并解决常见问题。整个流程清晰明了,涵盖了从环境准备到最终验证的全部环节。 阅读详情

相关推荐

从单应矩阵到实际距离:Apriltag测距完整实现指南

本文提供了基于Apriltag实现高精度视觉测距与姿态估计的完整指南。详细阐述了从相机标定、单应矩阵分解到欧拉角与距离计算的完整流程,并深入探讨了四个解的歧义选择、工程实践中的滤波优化与多Tag融合等关键问题,旨在帮助开发者在机器人、AR等应用中实现稳定可靠的距离检测与姿态估计。

n7o8p的博客 559

js数组去重

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

weixin_45519474的博客 2459

从ADS到SystemVue:当简单链路预算不够用时,我的射频系统级仿真方案升级实录

本文详细介绍了从ADS到SystemVue的射频系统级仿真升级路径,重点分析了基础链路预算在多端口元件和复杂场景下的局限性,并提供了SystemVue在非线性系统验证和跨域协同分析中的优势。通过实际案例展示了如何平滑迁移工具链,提升仿真精度和效率,适用于5G、毫米波雷达等现代射频系统设计。

weixin_34233974的博客 343

JS去重的几种方法

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

Duanjiani的博客 1万+

美团外卖 mtgsig 1.2 逆向工程与补环境实战指南

本文深入解析了美团外卖核心风控参数mtgsig 1.2的生成机制与逆向实战。通过拆解其复杂的JSON结构,揭示了设备指纹、环境信息加密等关键字段。重点阐述了在Node.js中模拟浏览器环境(补环境)的核心方法,包括DOM/BOM对象、本地存储及Canvas/WebGL等高级指纹的模拟技巧,为安全研究和合规自动化测试提供了一套完整的技术指南。

uber9的博客 409

手把手教你用GD32F407VET6的EXMC驱动外部SRAM,搞定大内存需求

本文详细介绍了如何使用GD32F407VET6的EXMC外设驱动外部SRAM,解决嵌入式开发中的大内存需求问题。通过硬件连接方案、EXMC时序配置与初始化步骤,以及软件集成与内存管理技巧,帮助开发者快速实现内存扩展。特别适合需要处理图形显示缓冲、音频处理等大内存场景的GD32F407开发者。

weixin_30752699的博客 346

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

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

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

从零到一:揭秘BlueROV2机械爪背后的Pixhawk舵机控制艺术

本文详细解析了如何基于Pixhawk飞控系统为BlueROV2水下机器人构建可靠的舵机控制系统。从硬件选型、ArduSub固件配置到供电安全与故障排除,全面揭秘机械爪背后的控制艺术,为水下机器人爱好者提供实用指南。

ol78901234的博客 242

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

if (!

cyj0919的博客 1082

Python爬虫:无账号无限制获取企查查信息

无限制企查查爬虫 ​通过网上爬虫获取了全国所有企业,然后就需要补充企业信息,首先想到的就是企查查,启信宝等专业网站,最终选择了企查查,尝试了多种方法: 1、selenium爬虫,绕过企查查的登录验证,但账号和IP限制太大,最终放弃 2、通过requests直接请求+cookies,遇到了cookie有效期和限制问题 不断的尝试和修改参数,最终发现一种有效方式selenium+ wep 只需要IP代理,不需要账号,没有限制,因为是没有登录,拿到的信息有限,能展示的都能获取。 一、初始化..

攻城狮的家园 1万+

微生物测序分析LEfSe

LEfse分析定义 LEfse分析即LDA Effect Size分析,可以实现多个分组之间的比较,还进行分组比较的内部进行亚组比较分析,从而找到组间在丰度上有显著差异的物种(即biomaker);

宁生信 5万+

JavaScript中数组去重的几种方法

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

m0_72838183的博客 2362

第3.4章 机器人第三方库实战总结(四):G2O优化库从入门到实战(附SLAM实例代码)

自定义边同样是满足复杂应用需求的重要手段。自定义边时,需要明确边所连接的顶点类型以及边所表示的误差项的计算方式。假设我们要定义一条边,用于约束两个上述自定义顶点之间的相对位姿和传感器偏移量关系。我们可以这样定义边类:public:// 计算误差// 计算雅可比矩阵// 读盘和存盘函数,这里暂不实现。

行知SLAM 358

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

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

weixin_43242112的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

数组去重: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

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

数组去重以及数组对象去重方法总结一、数组对象去重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、付费专栏及课程。

余额充值