- 1.利用标记
var arr = [2,6,2,6,4,3,16];// arr = [2,6,4,3,16]
function norepeat(arr){
var res = [];
for(var i=0;i<arr.length;i++){
var flag = true;
for(var j=0;j<res.length;j++){
if(arr[i]==res[j]){
flag = false;//将要推入新数组的数组元素 在新数组中有重复
}
}
if(flag){
res.push(arr[i]);
}
}
return res;
}
console.log(norepeat(arr));- 2.indexOf()找对应的下标
function norepeat(arr){
var newArr = [];
for(var i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i]);
}
}
return newArr;
}
var arr = [1,2,3,5,6,1,2,5];
console.log(norepeat(arr));- 3.Es5迭代方法filter() +indexOf
var arr = [1, 2, 3, 1, 2, 3, 5, 6, 4, 5];
var newArr = arr.filter(function(value, index, array) {
console.log(value,index,array);
return arr.indexOf(value) == index;
})
alert(newArr);- 4.利用快速排序去重(比较麻烦的一种啦)
function quickSort(arr) {
if(Array.isArray(arr)) { //先判断是不是个数组
if(arr.length <= 1) { //设置限定条件
return arr;
}
var left = [];
var right = [];
var midIndex = Math.floor(arr.length / 2); //找中间索引
var midValue = arr.splice(midIndex, 1); //找中间值
for(var j = 0; j < arr.length; j++) {
if(arr[j] < midValue) {
left.push(arr[j]);
}
if(arr[j] > midValue){
right.push(arr[j]);
}
}
return quickSort(left).concat(midValue, quickSort(right)); //递归直至数组长度为1 } else {
alert('请传个数组');
}
}
var arr1 = [6, 2, 5, 7, 21, 1,2,5];
console.log(quickSort(arr1));
相关文章
- [JavaScript/JQuery] js数组去重的4个方法
- 数组去重的四种方式
- js数组去重的三种方法
- js数组去重的三种方式的比较
- 小姐姐手把手教你JS数组中的对象去重
- 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝
- js 数组去重的三种方法(unique)
- js数组去重的4个方法+1
- js技巧-使用reduce实现更简洁的数组对象去重和数组扁平化
- PHP数组去重比较快的实现方式