Heim > Web-Frontend > js-Tutorial > So verwenden Sie es6 zum Implementieren der Deduplizierung (Codebeispiel)

So verwenden Sie es6 zum Implementieren der Deduplizierung (Codebeispiel)

不言
Freigeben: 2019-01-16 09:56:09
nach vorne
3015 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der Verwendung von es6 zur Implementierung der Deduplizierung (Codebeispiele). Ich hoffe, dass er für Sie hilfreich ist.

Im Folgenden finden Sie drei Methoden, um Duplikate aus einem Array zu entfernen und eindeutige Werte zurückzugeben. Am liebsten verwende ich Set, weil es die kürzeste und einfachste Methode ist.

const array = [5, 2, 4, 5, 3];
console.log([...new Set(array)])
console.log(array.filter((item, index) => array.indexOf(item) === index))
console.log(array.reduce((unique, item) => unique.includes(item) ? unique: [...unique, item], []))
// result:  [5, 2, 4, 3]
Nach dem Login kopieren

Set verwenden

Lassen Sie mich zunächst erklären, was Set ist:

Set ist ein neues Datenobjekt, das von es6 eingeführt wurde. Da Sie mit Set nur eindeutige Werte speichern können Wenn es in einem Array übergeben wird, werden alle doppelten Werte entfernt.

Okay, lass uns zurück zu unserem Code gehen und sehen, was los ist. Tatsächlich führte er die folgenden Operationen aus:

  1. Zuerst haben wir ein neues Set erstellt und das Array als Eingabeparameter übergeben. Da Set nur eindeutige Werte zulässt, werden alle Duplikate verwendet ENTFERNT.

  2. Da nun der doppelte Wert verschwunden ist, verwenden wir ..., um ihn wieder in ein Array umzuwandeln.

const array = [5, 2, 4, 5, 3];
const set = new Set(array)
const newArr = [...set]
console.log(newArr)
// result:  [5, 2, 4, 3]
Nach dem Login kopieren

Verwenden Sie die Funktion Array.from(), um Set in ein Array zu konvertieren

Darüber hinaus können Sie auch Array.from() verwenden, um Set in ein Array zu konvertieren Array.

const array = [5, 2, 4, 5, 3];
const set = new Set(array)
const newArr = Array.from(set)
console.log(newArr)
// result:  [5, 2, 4, 3]
Nach dem Login kopieren

Filter verwenden

Um diese Option zu verstehen, sehen wir uns an, was diese beiden Methoden bewirken: indexOf und filter

indexOf()

indexOf() gibt zurück der Index des ersten Elements, das wir im Array finden. Die Funktion

const array = [5, 2, 4, 5, 3];
console.log(array.indexOf(5))  // 0
console.log(array.indexOf(2))  // 1
console.log(array.indexOf(8))  // -1
Nach dem Login kopieren

filter

filter() erstellt ein neues Array basierend auf den von uns bereitgestellten Bedingungen. Mit anderen Worten: Wenn ein Element den Test besteht und „true“ zurückgibt, wird es in das gefilterte Array aufgenommen. Wenn ein Element fehlschlägt und „false“ zurückgibt, wird es nicht in das gefilterte Array aufgenommen.

Sehen wir uns Schritt für Schritt an, was jedes Mal passiert, wenn wir das Array durchlaufen.

const array = [5, 2, 4, 5, 3];
array.filter((item, index) => {
  console.log(item, index, array.indexOf(item), array.indexOf(item) === index)
  return array.indexOf(item) === index
})
//输出
// 5 0 0 true
// 2 1 1 true
// 4 2 2 true
// 5 3 0 false
// 3 4 4 true
Nach dem Login kopieren

Siehe die Kommentare zur Codeausgabe oben. Doppelte Elemente stimmen nicht mehr mit indexOf überein, daher ist das Ergebnis in diesen Fällen falsch und wird nicht in den gefilterten Wert einbezogen.

Duplikatwerte abrufen

Wir können auch die Funktion filter() im Array verwenden, um doppelte Werte abzurufen. Wir müssen den Code einfach wie folgt anpassen:

const array = [5, 2, 4, 5, 3];
array.filter((item, index) => {
  console.log(item, index, array.indexOf(item), array.indexOf(item) !== index)
  return array.indexOf(item) !== index
})
//输出
// 5 0 0 false
// 2 1 1 false
// 4 2 2 false
// 5 3 0 true
// 3 4 4 false
Nach dem Login kopieren

Verwenden Sie die Funktion „reduce()“

Die Funktion „red()“ wird verwendet, um die Elemente des Arrays zu reduzieren und sie entsprechend zu platzieren Die von Ihnen übergebene Reduzierfunktion wurde schließlich in ein endgültiges Array zusammengeführt.

In diesem Fall bestimmt unsere Funktion Reducer(), ob unser endgültiges Array dieses Element enthält. Wenn nicht, fügen Sie es in das endgültige Array ein Element und geben schließlich unser letztes Element zurück.

Die Funktion „reduce()“ ist immer etwas schwer zu verstehen, also schauen wir uns jetzt an, wie sie funktioniert.

const array = [5, 2, 4, 5, 3];
array.reduce((unique, item) => {
  console.log(item, unique, unique.includes(item), unique.includes(item) ? unique: [...unique, item])
  return unique.includes(item) ? unique: [...unique, item]
}, [])
//输出
// 5 []          false   [5]
// 2 [5]         false   [5, 2]
// 4 [5, 2]      false   [5, 2, 4]
// 5 [5, 2, 4]   true    [5, 2, 4]
// 3 [5, 2, 4]   false   [5, 2, 4, 3]
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo verwenden Sie es6 zum Implementieren der Deduplizierung (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage