2012-04-26 7 views
6

インデックスを提供しながら配列結合を提供する何らかのユーティリティ関数があるかどうか尋ねたいと思いました。たぶんjQueryののプロトタイプが、これは、いない場合、私は自分:)でそれを書きます提供startIndexからendIndexに配列を結合する

私は何を期待することはとても

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

のようなものは、そのarray.joinある( " - "、1、2) "bc"を返します

かなり一般的なJavascriptライブラリにこの種のユーティリティ機能がありますか?

よろしく Wormi

答えて

26

それはあなたがそれはあなたの定義のように動作する場合は、そのようにそれを使用することができますネイティブ

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

に動作します:

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

確かに行く方法。範囲を取るすべてのメソッドのバージョンを用意するのではなく、sliceを使って必要な範囲だけを含む配列を作成してください。 –

+0

うんうれしい..完全にスライス機能を忘れてしまった。君たちありがとう。 – globalworming

1

はちょうどあなたがしたい配列をスライス手動で参加してください。

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

slice()(1、2)と等価である(3,1)のように、最後のインデックスは、指定された含んでいません。

関連する問題