JavaScript数组-去重
栏目: JavaScript · 发布时间: 6年前
内容简介:// 利用对象另种处理方式----------------------------------------------------------------------------------------------------------------参考文章&&强烈推荐:布罗利
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️⃣ ➖ 数组扁平化
- 算法-计算小数组在大数组中的索引
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beautiful Code
Greg Wilson、Andy Oram / O'Reilly Media / 2007-7-6 / GBP 35.99
In this unique work, leading computer scientists discuss how they found unusual, carefully designed solutions to difficult problems. This book lets the reader look over the shoulder of major coding an......一起来看看 《Beautiful Code》 这本书的介绍吧!