云南建设网站澜沧项目,河南省建设招投标网站,深圳网站公司好,网店货源一件代发货有时候我们做项目的时候往往会需要把数组里面一些重复的项去掉#xff0c;但是原生JS有排序#xff0c;有筛选等等#xff0c;但是就是没有数组去重怎么办呢#xff1f;这能怎么办#xff0c;自己手动实现嘛。#xff08;以下代码直接在原型上添加的的方法#xff0c;为…有时候我们做项目的时候往往会需要把数组里面一些重复的项去掉但是原生JS有排序有筛选等等但是就是没有数组去重怎么办呢这能怎么办自己手动实现嘛。以下代码直接在原型上添加的的方法为的就是和原生JS方法类似可以达到Array.xxx()这样的效果 第一种方法创建空数组利用indexOf方法检测就数组的项是否在新数组中。 Array.prototype.uniquefunction(){var arr[];//创建新数组for(var i0;ithis.length;i){ //遍历当前数组if(arr.indexOf(this[i])-1){//如果等于-1那么也是就是新数组中没有一项和当前数组一样arr.push(this[i])}
}return arr;
}//调用ary.unique() 第二种方法:创建空数组和空对象判断数组是否在对象中 Array.prototype.uniquefunction(){
var tmp{},arr[]
for(var i0;ilt;this.length;i){
if(!tmp[this[i]]){//如果tmp中没有this[i]
tmp[this[i]]true;//存入
arr.push(this[i]);//添加到新数组中
}
}
return arr
}
//调用ary.unique() 第三种方法下标判断法 Array.prototype.uniquefunction(){
var arr[this[0]];
for(var i1;ithis.length;i){ //遍历当前数组,从第二项开始遍历
if(this.indexOf(this[i])i){//如果当前数组的第i项是i那么就存入新的数组
arr.push(this[i])
}
}
return arr;
}
//调用ary.unique() 第四种方法排序后在去重 Array.prototype.uniquefunction(){
var arr[];
this.sort()
for(var i0;ithis.length;i){
if(this[i]!arr[arr.length-1]){
arr.push(this[i])
}
}
return arr;
}
//调用ary.unique() 第五种方法黑科技new Set数组去重 首先我们先介绍下new Set new Set是来自于ES6Set对象是值的集合你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次即 Set 中的元素是唯一的。 大家可以去看下MDN文档链接地址https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set 下面给出代码 [...new Set([1,1,2,2,3,3])];//[1,2,3] 代码就这一句利用的是Set中的元素是唯一的只会出现一次的特性这里还有一个概念“...” …扩展运算符 扩展运算符将一个数组转为用逗号分隔的参数序列 这样以来就很清楚了黑科技是不是很神奇其实这也是大厂的一道面试题说的是请用最少的代码实现数组去重 新人如有错误往指正以免误导别人~拜谢转载于:https://www.cnblogs.com/fakin/p/7484617.html