1. 最基本的去重方法
思路: 定义一个新数组, 并存放原数组的第一个元素, 然后将元素组一一和新数组的元素对比, 若不同则存放在新数组中.
- function unique(arr){
- var res = [arr[0]];
- for(var i=1;i<arr.length;i++){
- var repeat = false;
- for(var j=0;j<res.length;j++){
- if(arr[i] == res[j]){
- repeat = true;
- break;
- }
- }
- if(!repeat){
- res.push(arr[i]);
- }
- }
- return res;
- }
2. 先排序在去重
思路: 先将原数组排序, 在与相邻的进行比较, 如果不同则存入新数组
- function unique(arr){
- var arr2 = arr.sort();
- var res = [arr2[0]];
- for(var i=1;i<arr2.length;i++){
- if(arr2[i] !== res[res.length-1]){
- res.push(arr2[i]);
- }
- }
- return res;
- }
3. 利用对象的属性去重 (推荐)
思路: 每次取出原数组的元素, 然后再对象中访问这个属性, 如果存在就说明重复
- function unique(arr){
- var res =[];
- var JSON = {
- };
- for(var i=0;i<arr.length;i++){
- if(!JSON[arr[i]]){
- res.push(arr[i]);
- JSON[arr[i]] = 1;
- }
- }
- return res;
- }
4. 利用下标查询
- function unique(arr){
- var newArr = [arr[0]];
- for(var i=1;i<arr.length;i++){
- if(newArr.indexOf(arr[i]) == -1){
- newArr.push(arr[i]);
- }
- }
- return newArr;
- }
经过测试以上代码没有什么问题, 有问题请指正, 谢谢.
来源: http://www.bubuko.com/infodetail-2992243.html