2014-09-02 13 views
6

Ich mag Werte entfernen, von der Verwendung von weniger als und größer als Bedingung zum Beispiel meines Array istWie Array-Werte entfernen

138,124,128,126,140,113,102,128,136,110,134,132,130,132,132,104,116,135,120 

so jetzt mein Minimalwert ist 120 und Maximalwert ist 130. Ich möchte alle verbleibenden Elemente aus dem Array entfernen. Ist das in Javascript möglich?

Ich bin Neuling, so würde jede Hilfe geschätzt werden.

Antwort

13

Sicher, filtern, dass nur das Array

var arr = [ 
    138,124,128,126,140,113,102,128,136,110,134,132,130,132,132,104,116,135,120 
] 

var new_arr = arr.filter(function(x) { 
    return x > 120 && x < 130; 
}); 

FIDDLE

Verwenden >= und <= 120 und 130 umfassen sowie usw.

3

Verwendung map,

.Map $ (a, Funktion (o, i) {if (o & o> 120) Rückkehr o; })

+0

1) gibt es nichts über jQuery in der Frage erwähnt; 2) Sie sollten in diesem Fall '$ .grep' anstelle von' $ .map' vorschlagen. – VisioN

+0

danke, das habe ich verpasst –

3

Gerade auf dem Filter zu verlängern, und es geht in eine wiederverwendbare Funktion Wurf:

var arr = [ 
    138,124,128,126,140,113,102,128,136,110,134,132,130,132,132,104,116,135,120 
] 
/* 
* @param arr Array of integers 
* @param min Minimum (Inclusive) 
* @param max Maximum (Exclusive) 
*/ 
var filterInRange = function(arr, min, max) { 
    return arr.filter(function(item) { 
     return item >= min && item < max; 
    }); 
} 

console.log(filterInRange(arr, 120, 131).sort()); // [120,124,126,128,128,130] 
1

Verwenden der array.prototype.filter() Verfahren nur diese Elemente enthält, ein neues Array zurückzubringen einen booleschen Test bestanden.

function isBigEnough(element) { 
    return element >= 10; } 


    var filtered = [12, 5, 8, 130, 44].filter(isBigEnough); 

Gibt ein neues Array [12, 130, 44].

Zusammen mit array.prototype.map() und array.prototype.reduce()array.prototype.filter() erleichtert die Verwendung eines funktionalen Programmierstils in JavaScript.

0

Einfach Filter verwenden, es für Dinge wie diese erstellt wird, sollte der Code unter den Job erledigen, wie Sie wollen:

//ES6 
var arr = [138,124,128,126,140,113,102,128,136,110,134,132,130,132,132,104,116,135,120]; 
var filteredArr = arr.filter(n => n>120 && n<130); //[124, 128, 126, 128]