In es6 filtert der Filter Array-Elemente und gibt ein neues Array zurück. Die Funktion filter() erstellt ein neues Array, das alle Elemente des Tests enthält, der über die bereitgestellte Rückruffunktion implementiert wird, die Syntax „arr.filter(callback(element[, index[, array]])[, thisArg])“; if If Bestehen keine Array-Elemente den Test, wird ein leeres Array zurückgegeben.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, ECMAScript Version 6, Dell G3-Computer.
filter in ES6
Filterfunktion wird allgemein als Filterfunktion bezeichnet: Array-Elemente filtern und ein neues Array zurückgeben;
filter()-Methode erstellt ein neues Array, das alle von Provides all übergebenen Elemente enthält Elemente des von der Funktion implementierten Tests.
var sexData=["男","女","女","男","女"]; var filter2=sexData.filter(function(sex){ return sex==="女" }) //console.log(filter2) ["女", "女", "女"]
var porducts = [ {name: 'apple',type: 'red'} , {name: 'orange',type: 'orange'}, {name: 'banana',type: 'yellow'}, {name: 'mango',type: 'yellow'} ]; var filter2=porducts.filter(function(item){ return item.type==='yellow' }) //console.log(filter2) //0: {name: "banana", type: "yellow"}1: {name: "mango", type: "yellow"}
Syntax
var newArray = arr.filter( callback(element[, index[, array]])[, thisArg] )
Parameter
callback: Rückruffunktion
element: die im arr-Array verarbeiteten Daten
index: der Index des Elements, optional
Array: Das Array selbst, in dem der Filter aufgerufen wurde, optional
thisArg: Der dafür beim Ausführen des Rückrufs verwendete Wert, optional
Rückgabewert
Ein neues Array bestehend aus Elementen, die den Test bestanden haben, wenn keine Array-Elemente vorhanden sind Wenn Sie den Test bestehen, wird ein leeres Array zurückgegeben.
Description
Filter ruft die Callback-Funktion einmal für jedes Element im Array auf und erstellt ein neues Array mit allen Elementen, für die der Callback „true“ oder einen Wert zurückgibt, der „true“ entspricht. Callback wird nur für Indizes aufgerufen, denen Werte zugewiesen wurden, und nicht für Indizes, die gelöscht wurden oder denen nie Werte zugewiesen wurden. Elemente, die den Rückruftest nicht bestehen, werden übersprungen und nicht in das neue Array aufgenommen.
Drei Parameter werden übergeben, wenn der Rückruf aufgerufen wird: der Wert des Elements, der Index des Elements und das Array selbst, das durchlaufen wird.
Wenn ein thisArg-Parameter für den Filter bereitgestellt wird, wird er als dieser Wert verwendet wenn ein Rückruf aufgerufen wird. Andernfalls ist dieser Wert des Rückrufs im nicht-strikten Modus das globale Objekt und im strikten Modus undefiniert. Der Wert von this, der schließlich von der Callback-Funktion beobachtet wird, wird gemäß den Regeln von „this“ bestimmt, die von der normalen Funktion gesehen werden.
filter ändert nicht das ursprüngliche Array, sondern gibt das neue gefilterte Array zurück.
filter Der Bereich der durchlaufenen Elemente wurde bestimmt, bevor der Rückruf zum ersten Mal aufgerufen wird. Elemente, die dem Array hinzugefügt werden, nachdem der Filter aufgerufen wurde, werden vom Filter nicht durchlaufen. Wenn vorhandene Elemente geändert wurden, sind die Werte, die sie an den Rückruf übergeben, die Werte in dem Moment, in dem der Filter sie durchläuft. Elemente, die gelöscht wurden oder denen nie ein Wert zugewiesen wurde, werden nicht durchlaufen.
Schiale Verwendung:
1. Entfernen Sie leere Zeichenfolgen, undefiniert, null
array.filter((value, index, arr) => {value})
2. Array Deduplication
array.filter((value, index, arr) => {arr.indexOf(value) === index})
example
1. json von Elementen mit IDs ungleich Null.
var arr = [ { id: 15 }, { id: -1 }, { id: 0 }, { id: 3 }, { id: 12.2 }, { }, { id: null }, { id: NaN }, { id: 'undefined' }];var invalidEntries = 0;function isNumber(obj) { return obj !== undefined && typeof(obj) === 'number' && !isNaN(obj);}function filterByID(item) { if (isNumber(item.id) && item.id !== 0) { return true; } invalidEntries++; return false; }var arrByID = arr.filter(filterByID);console.log('Filtered Array\n', arrByID); // Filtered Array// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]console.log('Number of Invalid Entries = ', invalidEntries); // Number of Invalid Entries = 5
2. Leere Zeichenfolgen entfernen, undefiniert, null
//2. 去掉空字符串、undefined、null var porducts = [ {name:''}, {name:"哈哈"} ]; var filter2=porducts.filter(function(item){ return item.name }) //console.log(filter2) //打印得出 0: {name: "哈哈"}
//3. 数组去重 array.filter((value, index, arr) => {arr.indexOf(value) === index}) var porducts = ['苹果','香蕉','苹果','芒果'] var filter2=porducts.filter(function(item,index,porducts){ return porducts.indexOf(item)==index }) //console.log(filter2) // ["苹果", "香蕉", "芒果"]
[Empfohlenes Lernen:
Javascript-Tutorial für FortgeschritteneDas obige ist der detaillierte Inhalt vonWelche Funktion hat der Filter in es6?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!