JavaScript数组-去重
栏目: JavaScript · 发布时间: 5年前
内容简介:// 利用对象另种处理方式----------------------------------------------------------------------------------------------------------------参考文章&&强烈推荐:布罗利
const arr = [1, 2, 1, 2, 3, 4, 'l', 2, 1, 3, 'l']; const newArr = arr.filter(function(ele, index, array) { return index === array.indexOf(ele) }); console.log(newArr); // [ 1, 2, 3, 4, 'l' ] 复制代码
数组indexOf
var arr = [1, 2, 1, 2, 3, 4, 'l', 2, 1, 3, 'l']; Array.prototype.unique2 = function() { var newArr = []; var len = this.length; for(var i = 0; i < len; i++) { var cur = this[i]; if(newArr.indexOf(cur) === -1) { newArr[newArr.length] = cur; } } return newArr; } console.log(arr.unique2()); // (5) [1, 2, 3, 4, "l"] 复制代码
利用普通对象object去重(对象中key名不能有重复的)
Array.prototype.unique3 = function() { var newArr = this.slice(0); var len = this.length; var obj = {}; for(var i = 0; i < len; i++) { var cur = newArr[i]; if(obj[cur]) { newArr[i] = newArr[newArr.length - 1]; newArr.length--; i--; continue; } obj[cur] = cur; } return newArr; } console.log(arr.unique3()); // (5) [1, 2, "l", 3, 4] var arr = [1, 2, 1, 2, 3, 4, 'l', 2, 1, 3, 'l']; 复制代码
// 利用对象另种处理方式
Array.prototype.unique4 = function() { var json = {} var newArr = [] var len = this.length for(var i = 0; i < len; i++) { var cur = this[i]; if (typeof json[cur] === 'undefined') { json[cur] = true; newArr.push(cur) } } return newArr; } var arr = [1, 2, 1, 2, 3, 4, 'l', 2, 1, 3, 'l']; console.log(arr.unique4()); // (5) [1, 2, 3, 4, "l"] 复制代码
双循环去重
Array.prototype.distinct1 = function () { var arr = this for (var i = 0; i < arr.length - 1; i++) { var cur = arr[i] for (var j = i + 1; j < arr.length;) { cur === arr[j] ? arr.splice(j, 1) : j++ } } return arr; } var arr = [1, 2, 3, 4, 4, 1, 1, 2, 1, 1, 1] console.log(arr.distinct1()) // (4) [1, 2, 3, 4] 复制代码
/* * * 还是得调用“indexOf”性能跟方法1差不多, * 实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i, * 那么表示第i项是重复的,忽略掉。否则存入结果数组。 * */ function uniq(array){ var temp = []; for(var i = 0; i < array.length; i++) { //如果当前数组的第i项在当前数组中第一次出现的位置是i,才存入数组;否则代表是重复的 if(array.indexOf(array[i]) == i){ temp.push(array[i]) } } return temp; } var aa = [1,2,"2",4,9,"a","a",2,3,5,6,5]; console.log(uniq(aa)); 复制代码
var obj = {} var ary = [] for (var i = 0; i < arr.length; i++) { var cur = arr[i] if (!obj[cur]) { obj[cur] = true ary.push(cur) } } obj = null 复制代码
var arr = [1, 1, 2, 3, 2] var ary = [] for (var i = 0; i < arr.length; i++) { var cur = arr[i] if (ary.indexOf(cur) === -1) { ary.push(cur) } } 复制代码
function unique(arr) { // [1, 1, 1, 2, 2, 2] arr = arr.slice(0) // 完全克隆一个新数组 for (var i = 0; i < arr.length; i++) { var cur = arr[i] for (var j = i + 1; j < arr.length;) { cur === arr[j] ? arr.splice(j, 1) : j++ } } return arr } 复制代码
----------------------------------------------------------------------------------------------------------------
参考文章&&强烈推荐:布罗利
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- C语言指针数组和数组指针
- 数组 – 如何在Swift中将数组拆分成两半?
- 菜鸡的算法修炼:数组(旋转数组的最小数字)
- 交换数组元素,使得数组的和的差最小
- JS数组专题1️⃣ ➖ 数组扁平化
- 算法-计算小数组在大数组中的索引
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Cascading Style Sheets 2.0 Programmer's Reference
Eric A. Meyer / McGraw-Hill Osborne Media / 2001-03-20 / USD 19.99
The most authoritative quick reference available for CSS programmers. This handy resource gives you programming essentials at your fingertips, including all the new tags and features in CSS 2.0. You'l......一起来看看 《Cascading Style Sheets 2.0 Programmer's Reference》 这本书的介绍吧!