2012-04-26 17 views
6

Volevo chiedere se esiste una sorta di funzione di utilità che offre l'unione di array fornendo un indice. Forse Prototipo di jQuery fornisce questo, in caso contrario, la scriverò sul mio :)Unire array da startIndex a endIndex

Quello che mi aspetto è qualcosa di simile

var array= ["a", "b", "c", "d"]; 
function Array.prototype.join(seperator [, startIndex, endIndex]){ 
    // code 
} 

in modo che Array.join ("-", 1, 2) restituire "bc"

Esiste questo tipo di funzione di utilità in una libreria Javascript piuttosto comune?

saluti Wormi

risposta

26

Funziona nativa

["a", "b", "c", "d"].slice(1,3).join("-") //b-c 

Se si vuole che si comporti come la sua definizione si potrebbe usare in questo modo:

Array.prototype.myJoin = function(seperator,start,end){ 
    if(!start) start = 0; 
    if(!end) end = this.length - 1; 
    end++; 
    return this.slice(start,end).join(seperator); 
}; 

var arr = ["a", "b", "c", "d"]; 
arr.myJoin("-",2,3) //c-d 
arr.myJoin("-") //a-b-c-d 
arr.myJoin("-",1) //b-c-d 
+0

Decisamente la strada da percorrere. Piuttosto che avere versioni di tutti i metodi che prendono intervalli, basta usare slice per costruire un array contenente solo l'intervallo desiderato. –

+0

Sì, bello ... mi sono completamente dimenticato della funzione slice. Grazie ragazzi. – globalworming

1

Proprio affettare la matrice che si desidera fuori, quindi aggiungerlo manualmente.

var array= ["a", "b", "c", "d"]; 
var joinedArray = array.slice(1, 3).join("-"); 

Nota: slice() non include l'ultimo indice specificato, quindi (1, 3) è equivalente a (1, 2).

Problemi correlati