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️⃣ ➖ 数组扁平化
- 算法-计算小数组在大数组中的索引
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
硅谷增长黑客实战笔记
曲卉 / 机械工业出版社 / 2018-4-10 / 65.00元
增长黑客这个词源于硅谷,简单说,这是一群以数据驱动营销、以迭代验证策略,通过技术手段实现爆发式增长的新型人才。近年来,互联网公司意识到这一角色可以发挥四两拨千斤的作用,因此对该职位的需求也如井喷式增长。 本书作者曾在增长黑客之父肖恩•埃利斯麾下担任增长负责人,用亲身经历为你总结出增长黑客必备的套路、内力和兵法。本书不仅有逻辑清晰的理论体系、干货满满的实践心得,还有Pinterest、SoFi......一起来看看 《硅谷增长黑客实战笔记》 这本书的介绍吧!
URL 编码/解码
URL 编码/解码
HSV CMYK 转换工具
HSV CMYK互换工具