-
2021-10-18 00:17:36
方法一:利用数组的indexOf方法去重
需求:
利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组
1. 需要一个数组用于存放筛选之后的数据
2. 遍历原来的数组,把不是0的数据添加到新数组里面
3. 新数组里面的个数,用length不断累加
var arr = [58, 6, 8, 56, 0, 8];
function unique() {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
var arr = unique([58, 6, 8, 56, 0, 8]);
console.log(arr);
方法二 :使用双重for循环,再利用数组的splice方法去重
var arr = [0,69,58,38,0,77,69];
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[j] == arr[i]) {
//splice(索引,长度,添加)
arr.splice(j, 1);
j--;
}
}
}
console.log(arr);方法三:利用ES6中set方法去重
var arr1 = [25, 2, 13, 25,2,66,99];
var sum = new Set(arr1);
console.log(sum);更多相关内容 -
JavaScript数组去重的几种方法
2020-12-11 08:47:43有时候我们做项目的时候往往会需要把数组里面一些重复的项去掉,但是原生JS有排序,有筛选等等,但是就是没有数组去重怎么办呢? 这能怎么办,自己手动实现嘛。 数组不像对象和hash有唯一的标志特征(key)。所以,... -
js去重filter
2022-03-20 21:00:36filter用于对数组进行过滤。 它创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。 注意:filter()不会对空数组进行检测、不会改变原始数组 <script> var arr =["a",1,2,3,"a",3,2...- filter用于对数组进行过滤。
- 它创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
- 注意:filter()不会对空数组进行检测、不会改变原始数组
<script> var arr =["a",1,2,3,"a",3,2,1]; var newarr=arr.filter(function(v,n,k){ return k.indexOf(v)==n; }); console.log(newarr); </script>
-
js数组去重的N种方法(小结)
2020-10-18 11:28:34本文给大家收藏整理了js数组去重的n种方法,大家可以根据自己需要选择比较好的方法,感兴趣的朋友一起看看吧 -
js字符串去重、json数组去重.txt
2019-11-02 10:31:27js对字符串(逗号隔开的)进行去重操作;js对json数组进行去重操作(指定某个属性),开发中经常遇到的前端小方法,简单实用 -
js去重与排序。
2022-02-28 14:58:25自定义变量名字.sort((a,b)=>{ return a -b}) 去重(6种方法) 1.双层循环,外层循环元素,内层循环时比较值 如果有相同的值则跳过,不相同则push进数组 Array.prototype.distinct = function(){ var arr = this, ...排序
从大到小
this.timeArry.sort((a,b)=>{return b.dayTimes-a.dayTimes})
从小到大
this.自定义变量名字.sort((a,b)=>{ return a -b})
去重(6种方法)
1.双层循环,外层循环元素,内层循环时比较值
如果有相同的值则跳过,不相同则push进数组
Array.prototype.distinct = function(){ var arr = this, result = [], i, j, len = arr.length; for(i = 0; i < len; i++){ for(j = i + 1; j < len; j++){ if(arr[i] === arr[j]){ j = ++i; } } result.push(arr[i]); } return result; } var arra = [1,2,3,4,4,1,1,2,1,1,1]; arra.distinct(); //返回[3,4,2,1]
2.利用splice直接在原数组进行操作
双层循环,外层循环元素,内层循环时比较值
值相同时,则删去这个值
注意点:删除元素之后,需要将数组的长度也减1.
Array.prototype.distinct = function (){ var arr = this, 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; }; var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,]; var b = a.distinct(); console.log(b.toString()); //1,2,3,4,5,6,56
优点:简单易懂
缺点:占用内存高,速度慢
3.利用对象的属性不能相同的特点进行去重
Array.prototype.distinct = function (){ var arr = this, i, obj = {}, result = [], len = arr.length; for(i = 0; i< arr.length; i++){ if(!obj[arr[i]]){ //如果能查找到,证明数组元素重复了 obj[arr[i]] = 1; result.push(arr[i]); } } return result; }; var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,]; var b = a.distinct(); console.log(b.toString()); //1,2,3,4,5,6,56
4.数组递归去重
运用递归的思想
先排序,然后从最后开始比较,遇到相同,则删除
Array.prototype.distinct = function (){ var arr = this, 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函数进行去重 } } loop(len-1); return arr; }; var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,56,45,56]; var b = a.distinct(); console.log(b.toString()); //1,2,3,4,5,6,45,56
5.利用indexOf以及forEach
Array.prototype.distinct = function (){ var arr = this, result = [], len = arr.length; arr.forEach(function(v, i ,arr){ //这里利用map,filter方法也可以实现 var bool = arr.indexOf(v,i+1); //从传入参数的下一个索引值开始寻找是否存在重复 if(bool === -1){ result.push(v); } }) return result; }; var a = [1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,2,3,3,2,2,1,23,1,23,2,3,2,3,2,3]; var b = a.distinct(); console.log(b.toString()); //1,23,2,3
*** 6.利用ES6的set***
Set数据结构,它类似于数组,其成员的值都是唯一的。
利用Array.from将Set结构转换成数组
function dedupe(array){ return Array.from(new Set(array)); } dedupe([1,1,2,3]) //[1,2,3]
拓展运算符(…)内部使用for…of循环
let arr = [1,2,3,3]; let resultarr = [...new Set(arr)]; console.log(resultarr); //[1,2,3]
7.补充合并数组并去重的方法
1.concat()方法
思路:concat() 方法将传入的数组或非数组值与原数组合并,组成一个新的数组并返回。该方法会产生一个新的数组。this.timeData = this.timeData.concat(v.list);
function concatArr(arr1, arr2){ var arr = arr1.concat(arr2); arr = unique1(arr);//再引用上面的任意一个去重方法 return arr; }
2.Array.prototype.push.apply()
该方法优点是不会产生一个新的数组。var a = [1, 2, 3]; var b = [4, 5, 6]; Array.prototype.push.apply(a, b);//a=[1,2,3,4,5,6] //等效于:a.push.apply(a, b); //也等效于[].push.apply(a, b); function concatArray(arr1,arr2){ Array.prototype.push.apply(arr1, arr2); arr1 = unique1(arr1); return arr1; }
-
javascript去重
2021-09-26 21:37:281.Set去重//代码量是不是特别少 var s=[15,4,45,6,64,649,94,8] console.log(new Set(s)) 2.indexof var arr = [1, 2, 1]; var newArr = []; for (var i = 0; i < arr.length; i++) { if (newArr.indexOf...1.Set去重//代码量是不是特别少
var s=[15,4,45,6,64,649,94,8] console.log(new Set(s))
2.indexof
var arr = [1, 2, 1]; var newArr = []; for (var i = 0; i < arr.length; i++) { if (newArr.indexOf(arr[i]) == -1) { newArr.push(arr[i])} } console.log(newArr);
3.利用object属性
var arr = [1, 2, 1]; var newArr = {}; for (var i = 0; i < arr.length; i++) { newArr[arr[i]]=1 } console.log(...Object.keys(newArr));
其他数组下标标注,两个数对比等等方法有点浪费计算如果你有请直接留言评论给大家
-
JS去重的几种方法
2021-02-20 20:42:431、利用set去重 代码如下(示例): function arr1(arr) { return Array.from(new Set(arr)) } var arr = [1, 1, 1, 2, 2, 3, 4, 5, 6, 3, 4, 2, 4, 1,]; console.log(arr1(arr)) 这是目前最简单的去重方法,但是不... -
【JavaScript】JS去重的方法(由复杂到简单,亲测有效)(二)
2021-06-09 17:29:44JS去重的方法: 1.常规去重 let list = [0,1,2,3,2,1,0,4] let arr = [] for(let item of list){ if(arr.indexOf(item) == -1){ arr.push(item) } } ===> arr = [0,1,2,3,4] 2.快速去重 let list = [0,1,2,3... -
原生JS去重方法
2022-03-22 08:22:131.js数组的去重,排序,各有几种方式,分别是怎么实现的 去重方法一 arr.splice var arr=[1,3,5,6,3,5,6,3,7,9,23,23] function a(arr){ for(var i=0;i<arr.length-1;i++){ for(var j=i+1;j<... -
JavaScript 数组去重方法合集(简洁易懂)
2022-04-04 12:08:46JavaScript去重的七种方法 简单易懂 方法一:暴力去重法 // 暴力去重法 function ArrayIsUnique (array) { if (!Array.isArray(array)) return; for (let i = 0; i < array.length; i++) { for (let j = i + ... -
js 去重处理函数
2021-02-23 20:36:15// 去重处理函数 quChong(arr) { //遍历数组中所有的元素 for (var i = 0, len = arr.length; i < len; i++) { for (var v = i + 1; v < len; v++) { //检查是否有重复的元素 if (arr[i].sessionId === ... -
JavaScript 的十二种去重方法
2021-08-10 11:16:10一、利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN'... -
JavaScript去重
2020-05-14 21:13:54Array.from(new Set(arr))或[...new Set(arr)]: var arr = [1,1,2,5,6,3,5,5,6,8,9,8];...for循环嵌套,利用splice去重: function unique (origin) { let arr = [].concat(origin); for (let i = 0; i -
JS数组属性去重并校验重复数据
2020-10-15 19:07:32主要介绍了JS数组属性去重并校验重复数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
JS去重方法
2018-07-24 09:39:02方法三:利用对象的属性不能相同的特点进行去重 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... -
JS实现的字符串数组去重功能小结
2020-10-16 19:51:42主要介绍了JS实现的字符串数组去重功能,结合实例形式分析了javascript基于ES6、ES5、ES3及正则实现数组去重的相关操作技巧,需要的朋友可以参考下 -
JS去重ES6方法
2019-09-21 01:20:14// JS去重ES6方法 let arr = [0,0,0,1,1,2,3,5,9,6,5,4,10]; // 数组去重法1 let newarr = []; //定义一个空数组 for (var i = 0;i < arr.length;i++) { //先遍历 if(newarr.indexOf(arr[i]) == -1){ //... -
js 去重的6大类方法(史上最全、简单、适用)
2020-06-23 15:32:44在工作中对于去重的例子真的太多了,面试也会经常被问到,这个真的频繁了,我整理了这些方法分享给大家,希望大家根据自己的实际场景运用。 1、ES6的Set(这个最简单) var list = [ 1,2,1,{name:1},{name:1},null, ... -
js代码-去重:Set 对象 + 解构赋值
2021-07-16 14:44:07js代码-去重:Set 对象 + 解构赋值 -
js代码-数组去重相加
2021-07-16 13:07:41js代码-数组去重相加 -
js去重方法以及Set、Map、Array.from方法的使用
2022-01-29 10:00:39去重方法1: arrHeavy(arr){ let map = new Map() for (let item of arr) { if (!map.has(item)) { map.set(item, item) } } return [...map.values()] } 去重方法2: mapGet (arr) { for (let i = 0;... -
详解JS去重及字符串奇数位小写转大写
2020-10-20 18:26:07本篇文章主要介绍了详解JS去重及字符串奇数位小写转大写 ,非常具有实用价值,需要的朋友可以参考下。 -
js去重,取最大值
2019-09-11 23:32:20js的数组去重 1. var arr = [1,2,2,2,2,4,5,6,6,6,6,8,8,9,9,99] function uniquel(arr){ var hase = []; for(var i=0;i<arr.length;i++){ if(hase.indexOf(arr[i])==-1){ hase.push(arr[i]); } } return hase; }... -
js去重数组里的重复对象
2020-08-20 15:33:33废话不多话,直接看代码 let taskDocNumArr =[{id:1,name:z},{id:1,name:z},{id:2,name:k}] ... hash[curVal.id] //这里的id用作去重的唯一标识 ? "" : (hash[curVal.id] = true && preVal.push(curV -
js去重
2019-09-26 17:59:02let temp = []; for (var a = 0; a < this.resultList.length; a++) { if (temp.indexOf(this.resultList[a].attributes.NAME) === -1) { temp.push(this... -
js数组进行去重并排序
2022-02-15 11:14:59<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ...meta name="viewport" content="width=device-width, initial-scale=1.0">...title&... -
js 去重
2019-05-29 11:00:00转载于:https://www.cnblogs.com/huangwentian/p/10942486.html -
js去重,分组
2021-03-08 16:54:34js去重 function Dateilter(arr) { //取出字段的date并去重 let obj = {} arr.map(v => { obj[v.date] = 0 }) let timeArr = Object.keys(obj) // 用筛选函数返回相应集合 let result = timeArr.map(v => { ...