2014-09-02 9 views
6

voglio rimuovere i valori di usare meno e maggiore di condizioni, per esempio il mio allineamento èCome rimuovere valori di matrice stato usando meno e maggiore di in javascript

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

così ora il mio valore minimo è 120 e il valore massimo è 130. Voglio rimuovere tutti gli elementi rimanenti dall'array. È possibile in javascript.

Sono novizio quindi qualsiasi aiuto sarebbe apprezzato.

risposta

13

Certo, basta filtrare la matrice

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

Usa >= e <= di includere 120 e 130, nonché ecc

3

utilizzando map,

$ .map (a, function (o, i) {if (o & o> 120) return o; })

+0

1) non c'è nulla di cui circa jQuery in questione; 2) dovresti proporre di usare '$ .grep' invece di' $ .map' in questo caso. – VisioN

+0

grazie, mi sono perso –

3

Solo andando ad estendere sul filtro e gettarlo in una funzione riutilizzabile:

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

Utilizzare il metodo array.prototype.filter() per restituire un nuovo array che contiene solo gli elementi superamento di un test booleano.

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


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

Restituisce un nuovo array [12, 130, 44].

Insieme a array.prototype.map() e array.prototype.reduce()array.prototype.filter() facilita l'utilizzo di uno stile di programmazione funzionale in JavaScript.

0

semplicemente utilizzare il filtro, è creato per cose come questa, il codice qui sotto dovrebbe fare il lavoro che si desidera:

//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] 
Problemi correlati