Zeichnen Sie auf, wie der Filter in js verwendet wird

filter
Es wird verwendet, um einige Elemente des Arrays herauszufiltern und dann die verbleibenden Elemente zurückzugeben.

Ähnlich wie map() akzeptiert auch filter() von Array eine Funktion. Im Gegensatz zu map() wendet filter() die eingehende Funktion nacheinander auf jedes Element an und entscheidet dann, ob das Element beibehalten oder verworfen wird, je nachdem, ob der Rückgabewert wahr oder falsch ist.

Löschen Sie beispielsweise in einem Array die geraden Zahlen und behalten Sie nur die ungeraden Zahlen bei. Sie können so schreiben

var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (x) {
    
    
    return x % 2 !== 0;
});
r; // [1, 5, 9, 15]

Um eine leere Zeichenfolge in einem Array zu löschen, können Sie Folgendes schreiben:

var arr = ['A', '', 'B', null, undefined, 'C', '  '];
var r = arr.filter(function (s) {
    
    
    return s && s.trim(); // 注意:IE9以下的版本没有trim()方法
});
arr; // ['A', 'B', 'C']

Die Funktion trim() entfernt die führenden und nachfolgenden Leerzeichen aus einer Zeichenfolge

Ruf zurück

Die von filter() empfangene Rückruffunktion kann tatsächlich mehrere Parameter haben. Normalerweise verwenden wir nur den ersten Parameter, der ein Element von Array darstellt. Die Callback-Funktion kann auch zwei weitere Parameter empfangen, die die Position des Elements und des Arrays selbst angeben:

var arr = ['A', 'B', 'C'];
var r = arr.filter(function (element, index, self) {
    
    
    console.log(element); // 依次打印'A', 'B', 'C'
    console.log(index); // 依次打印0, 1, 2
    console.log(self); // self就是变量arr
    return true;
});

Mithilfe des Filters können Sie doppelte Elemente eines Arrays geschickt entfernen:

'use strict';
 
var
    r,
    arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
 
    r = arr.filter(function (element, index, self) {
    
    
    return self.indexOf(element) === index;
});
 
alert(r.toString());

indexOf gibt immer die Position des ersten Elements zurück, und die Position des nachfolgenden wiederholten Elements ist nicht gleich der von indexOf zurückgegebenen Position. Daher wird es vom Filter herausgefiltert, sodass das wiederholte Element nur das Element an der ersten Position behält

üben

Versuchen Sie bitte, Primzahlen mit filter() herauszufiltern:

'use strict';
 
function get_primes(arr) {
    
    
var s = arr.filter(function(x){
    
    
   if(x<4)return x!=1;
   var i=2;
   for(;i<=x/2;++i)
   if(x%i==0)return false;
   return true;
});
return s;
}
 
// 测试:
var
    x,
    r,
    arr = [];
for (x = 1; x < 100; x++) {
    
    
    arr.push(x);
}
r = get_primes(arr);
if (r.toString() === [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97].toString()) {
    
    
    alert('测试通过!');
} else {
    
    
    alert('测试失败: ' + r.toString());
}

Je suppose que tu aimes

Origine blog.csdn.net/qq_30627241/article/details/131211866
conseillé
Classement