JS 配列重複排除の 8 つの方法

1 つ目: 元の配列を並べ替え、隣接する配列と比較し、異なる場合は新しい配列に格納します。

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;
}

2 番目の方法: オブジェクトは重複した属性を保存できないという機能を利用します。

function unique(arr) {
    
    
  var res = [];
  var obj = {
    
    };
  for (var i = 0; i < arr.length; i++) {
    
    
    if (!obj[arr[i]]) {
    
    
      obj[arr[i]] = 1;
      res.push(arr[i]);
    }
  }
  return res;
}

3 番目の方法: 配列の添字属性の IndexOf を使用してクエリを実行します。(メモリ消費量が少ない)

    indexOf方法找到指定值时返回元素下标,未找到时返回-1,找到了就返回它值的下标。
function unique(arr) {
    
    
  var res = [];
  for (var i = 0; i < arr.length; i++) {
    
    
    if (res.indexOf(arr[i]) == -1) {
    
    
      res.push(arr[i]);
    }
  }
  return res;
}

4 番目の方法: 配列プロトタイプ オブジェクトで include メソッドを使用します。

include() メソッドは、文字列に指定された部分文字列が含まれるかどうか、または指定された要素が配列内に存在するかどうかを判断するために使用されます。
例: ['hello','world'].includes('hello')、指定された要素が配列内に存在する場合は true を返し、存在しない場合は false を返します。

function unique(arr) {
    
    
  var res = [];
  for (var i = 0; i < arr.length; i++) {
    
    
    if (!res.includes(arr[i])) {
    
     // 如果res新数组包含当前循环item
      res.push(arr[i]);
    }
  }
  return res;
}

5 番目: フィルターを使用し、配列プロトタイプ オブジェクトのメソッドを含めます。

function unique(arr) {
    
    
  var res = [];
  res = arr.filter(function (item) {
    
    
    return res.includes(item) ? '' : res.push(item);
  });
  return res;
}

6 番目: 配列プロトタイプ オブジェクトで forEach および include メソッドを使用します。

function unique(arr) {
    
    
  var res = [];
  arr.forEach(function (item) {
    
    
    res.includes(item) ? '' : res.push(item);
  });
  return res;
}

方法 7: 配列プロトタイプ オブジェクトで splice メソッドを使用します。

function unique(arr) {
    
    
  var i, j, len = arr.length;
  for (i = 0; i < len; i++) {
    
    
    for (j = i + 1; j < len; j++) {
    
    
      if (arr[i] == arr[j]) {
    
    
        arr.splice(j, 1);
        len--;
        j--;
      }
    }
  }
  return arr;
}

8番目の方法:ES6のsetメソッドを使用する

配列に似たデータ構造を設定し、そのメンバーの値は一意です

function unique(arr) {
    
    
  return Array.from(new Set(arr)); // 利用Array.from将Set结构转换成数组
}

おすすめ

転載: blog.csdn.net/ithunzi/article/details/130443160