数组去重的多种方法
利用双层For循环进行去重
利用锁的巧妙关系进行数组去重
// 数组去重 方法 1
function arrUnique(array) {
var _arr = [],
isResult;
for (var i = 0; i < array.length; i++) {
isResult = false
for (var j = 0; j < _arr.length; j++) {
if (_arr[j] === array[i]) {
isResult = true;
break;
}
}
if (!isResult) {
_arr.push(array[i])
}
}
return _arr;
}
利用双层循环进行逐个遍历去重
进行逐个遍历挨个比较去重,同样利用锁的巧妙关系
// 数组去重 方法 2
function arrUnique(array) {
var _arr = [],
isResult;
for (var i = 0; i < array.length; i++) {
isResult = false
for (var j = i + 1; j < array.length; j++) {
if (array[i] === array[j]) {
isResult = true;
break
}
}
if (!isResult) {
_arr.push(array[i])
}
}
return _arr;
}
利用排序,和indexOf进行去重
利用indexOf的查找机制进行去重
-
indexOf的查找机制,如var arr = [1, 1, 2, 2, 3, 4, 5] arr.indexOf(1) => 打印结果为 0 arr.indexOf(2) => 打印结果为 2 indexOf从左向右查找 -1 或者找到后的第一个索引
function arrUnique(array) {
var _arr = []
array.sort()
for (var i = 0; i < array.length; i++) {
if (array.indexOf(array[i]) === i) {
_arr.push(array[i])
}
}
return _arr
}
使用ForEach配合indexOf进行数组去重
跟上面的方法一样 只不过使用了 ForEach
function arrUnique(array) {
var _arr = []
array.sort()
array.forEach(function (item, index) {
if (array.indexOf(item) === index) {
_arr.push(item)
}
})
return _arr;
}
使用includes进行去重
includes和indexOf的区别includes可以查找NaN并且返回值为布尔值indexOf无法查询NaN并且返回值为-1或者找到的索引
function arrUnique(array) {
var _arr = []
array.forEach(function (item, index) {
if (!_arr.includes(item)) {
_arr.push(item)
}
})
return _arr;
}