Diciamo che ho un array:Come posso restituire tutti gli elementi precedenti in un array JavaScript rispetto a un valore corrente?
var myArr = new Array('alpha','beta','gamma','delta');
e che voglio una funzione per restituire una matrice di tutti gli articoli prima di un determinato elemento:
function getAllBefore(current) {
var myArr = new Array('alpha','beta','gamma','delta');
var newArr = ???
return newArr;
}
getAllBefore('beta'); // returns Array('alpha');
getAllBefore('delta'); // returns Array('alpha','beta','gamma');
Qual è il modo più veloce per ottenere questo? Posso dividere un array su un valore? Devo eseguire il ciclo di ciascuno di essi e creare un nuovo array al volo? Che cosa mi consiglia?
E se volessi il contrario, ovvero getAllAfter()
?
Usa 'indexOf' per ottenere la posizione del primo elemento che corrisponde a quello che stai cercando. Quindi usa 'slice' da 0 a quell'indice – Ian
Usa' .indexOf() 'per trovare la corrispondenza e' .slice() 'per fare una copia di una parte dell'array. – jfriend00
Non c'è bisogno di slice, basta impostare la lunghezza all'indice + 1 (purché la modifica dell'originale sia OK). :-) Inoltre, Array.prototype.indexOf è ES5 quindi potrebbe aver bisogno di ulteriore supporto per i browser più vecchi. – RobG