2012-04-26 14 views
6

Quería preguntar si existe algún tipo de función de utilidad que ofrezca un conjunto de matrices al tiempo que proporciona un índice. Tal vez Prototipo de jQuery ofrece esto, si no, voy a escribir por mi cuenta :)Join Array from startIndex to endIndex

Lo que espero es algo así como

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

modo que Array.join ("-", 1, 2) devolvería "bc"

¿Existe este tipo de función de utilidad en una biblioteca bastante común de Javascript?

Saludos Wormi

Respuesta

26

Funciona nativa

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

Si quieres que se comporte igual que su definición se puede utilizar de esa manera:

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

Definitivamente el camino a seguir. En lugar de tener versiones de todos los métodos que toman rangos, simplemente use slice para construir una matriz que contenga solo el rango que desee. –

+0

Sí, agradable ... se olvidó por completo de la función de corte. Gracias chicos. – globalworming

1

Sólo Cortar la matriz que desea fuera, luego únete a él manualmente.

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

Nota: slice() no incluye el último índice especificado, por lo que (1, 3) es equivalente a (1, 2).