Mehrere Methoden zur Array-Deduplizierung in JavaScript

1. Verwenden Sie die indexOf-Methode

      

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

Diese Methode kann den NaN-Typ, das Symbol und andere Typen nicht deduplizieren

2.. Verwenden Sie die Includes-Methode

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

Die Nachteile dieser Methode ähneln denen von Methode 1

3. Kartenmethode

Erstellen Sie eine leere Map-Datenstruktur, durchlaufen Sie das Array, das dedupliziert werden muss, und speichern Sie jedes Element des Arrays als Schlüssel in der Map. Da in der Karte nicht derselbe Schlüsselwert erscheint, ist das Endergebnis das Ergebnis nach der Deduplizierung.

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. Verwenden Sie die Set-Methode, einfach und schnell

ES6 bietet einen neuen Datenstruktursatz. Es ähnelt einem Array, aber die Werte der Mitglieder sind alle eindeutig und es gibt keine doppelten Werte. Set selbst ist ein Konstruktor, der zum Generieren der Set-Datenstruktur verwendet wird.

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

5. filter+indexOf-Methode

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

6. Verwenden Sie die Spleißmethode, um den Doppelzyklus zu deduplizieren

Doppelschichtige Schleife, äußeres Schleifenelement, innerer Schleifenvergleichswert. Wenn der Wert gleich ist, löschen Sie den Wert. Diese Methode wird nicht empfohlen, da sie mehr Leistung verbraucht

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
}

Supongo que te gusta

Origin blog.csdn.net/m0_72838183/article/details/127120806
Recomendado
Clasificación