当前位置:首页 > js 数组去重 javascript 数组去重

js 数组去重 javascript 数组去重

发布于 2018-04-17 阅读 550 次 Javascript

数组的排序去重

方法一:

  1. function delSame(arr){
  2. var noSame = [];
  3. var obj = {};
  4. for(var i=0;i<arr.length;i++){
  5. if(!obj[arr[i]]){
  6. obj[arr[i]] = i;
  7. noSame[i]=arr[i];
  8. }
  9. }
  10. return noSame;
  11. }

方法二:

  1. function delSame(arr){
  2. var noSame = [];
  3. for(var i=0;i<arr.length;i++){
  4. for(var j=i+1;j<arr.length;j++){
  5. if(arr[i]===arr[j]){
  6. continue;
  7. }else{
  8. noSame[i] = arr[i];
  9. }
  10. }
  11. }
  12. }

方法三:

function delSame(){

  1. var result = [];
  2. arr.forEach(function(v, i ,arr){
  3. var bool = arr.indexOf(v,i+1);
  4. if(bool === -1){
  5. result.push(v);
  6. }
  7. })
  8. return result;
  9. }

也可以不定义新数组直接用splice函数删除数组元素

方法四:

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
利用set可以得到一个没有重复值的数组

  1. var arr = [1,23,44,4,5,1,23];
  2. const set = new Set(arr);
  3. var newArr = [...set]
  4. //或者var newArr = Array.from(set);
  5. console.log(newArr) // 1,23,44,4,5

一些值得注意的地方
对象和数组的比较永远是不想等的,所以如果数组里面还有两个空对象,如果你想只留一个以上的方法是不能去除的,我们可以使用,如果你由此方面的需求我们可以用JSON.stringify()来转化

  1. JSON.stringify({}) == '{}' // true
  2. JSON.stringify([]) == '[]' // true

splice用法

例如有一个数组

  1. arr = [1,2,3,4,5]
  2. arr.splice(1,1) //删除arr[1];
  3. //1345
  4. arr.splice(1,1,'q') //删除arr[1];替换成q
  5. //1,q,3,4,5
  6. arr.splice(1,0,'q') //向第一个元素的位置插入一个元素q
  7. //1,q,2,3,4,5