Plusieurs méthodes de déduplication de tableau en JavaScript

1. Utilisez la méthode indexOf

      

function unique(arr) {
  let res = []
  for (let child of arr) {
    if (res.indexOf(child) === -1) {
      res.push(child)
    }
  }
  return res
}

Cette méthode ne peut pas dédupliquer le type NaN, le symbole et les autres types

2.. Utilisez la méthode include

function unique(arr) {
  let res = []
  for (let child of arr) {
    if (!res.includes(child)) {
      res.push(child)
    }
  }
  return res
}

Les inconvénients de cette méthode sont similaires à la méthode 1

3. méthode de la carte

Créez une structure de données Map vide, parcourez le tableau qui doit être dédupliqué et stockez chaque élément du tableau en tant que clé dans Map. Étant donné que la même valeur de clé n'apparaît pas dans la carte, le résultat final est le résultat après déduplication.

function unique(arr) {
  let map = new Map()
  let res = []
  for (let i = 0; i < arr.length; i++) {
    if (map.has(arr[i])) {
      map.set(arr[i], true)
    } else {
      map.set(arr[i], false)
      res.push(arr[i])
    }
  }
  return res
}

4. Utilisez la méthode Set, simple et rapide

ES6 fournit une nouvelle structure de données Set. Il est similaire à un tableau, mais les valeurs des membres sont toutes uniques et il n'y a pas de valeurs en double. Set lui-même est un constructeur utilisé pour générer la structure de données Set.

function unique(arr) {
  return Array.from(new Set(arr))
}

5. méthode filter+indexOf

function unique(arr) {
  return arr.filter((item, index) => {
    //判断该元素一次出现的位置和当前位置是否相等,如果相等则返回
    return arr.indexOf(item) === index
  })
}

6. Utilisez la méthode d'épissage pour dédupliquer le double cycle

Boucle à double couche, l'élément de la boucle externe, la valeur de comparaison de la boucle interne, si la valeur est la même, supprimez la valeur, cette méthode n'est pas recommandée, elle consomme plus de performances

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

おすすめ

転載: blog.csdn.net/m0_72838183/article/details/127120806