2012-04-26 34 views
6

Chciałem zapytać, czy jest jakaś funkcja użyteczności, która oferuje łączenie tablic przy jednoczesnym dostarczaniu indeksu. Może Prototyp jQuery zapewnia to, jeśli nie będę pisać o moim :)Połączyć tablicę od startIndex do endIndex

Czego oczekuję jest coś takiego jak

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

tak że Array.join ("-", 1, 2) zwróci "bc"

Czy istnieje taka funkcja użyteczna w całkiem wspólnej bibliotece JavaScript?

Pozdrowienia Wormi

Odpowiedz

26

Działa rodzimy

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

Jeśli chcesz, by zachowywać się jak definicji można go używać w ten sposób:

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

Zdecydowanie droga. Zamiast mieć wersje wszystkich metod, które mają zasięg, po prostu użyj slice do zbudowania tablicy zawierającej tylko żądany zakres. –

+0

Tak miło .. całkowicie zapomniałem o funkcji plasterka. Dzięki chłopaki. – globalworming

1

Wystarczy plasterek macierz, którą chcesz się, a następnie dołącz ręcznie.

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

Uwaga: slice() nie obejmuje ostatni wskaźnik określone, więc (1, 3) jest równoważne (1, 2).

Powiązane problemy