2012-04-26 24 views
6

Tôi muốn hỏi xem có một số chức năng tiện ích nào cung cấp tham gia mảng trong khi cung cấp chỉ mục hay không. Có lẽ Nguyên mẫu của jQuery cung cấp này, nếu không, tôi sẽ viết nó trên của riêng tôi :)Tham gia Array từ startIndex đến endIndex

Những gì tôi mong đợi một cái gì đó giống như

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

như vậy là Array.join ("-", 1, 2) sẽ trả về "bc"

Có loại chức năng tiện ích nào trong Thư viện Javascript khá phổ biến không?

Trân Wormi

Trả lời

26

Nó hoạt động tự nhiên

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

Nếu bạn muốn nó hoạt động giống như định nghĩa của bạn, bạn có thể sử dụng nó như vậy:

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

Chắc chắn là con đường để đi. Thay vì có các phiên bản của tất cả các phương thức có phạm vi, chỉ cần sử dụng slice để tạo một mảng chứa chỉ phạm vi mà bạn muốn. –

+0

Vâng .. hoàn toàn quên mất chức năng lát. Cảm ơn các bạn. – globalworming

1

Chỉ cần cắt những mảng bạn muốn ra, sau đó tham gia thủ công.

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

Lưu ý: slice() không bao gồm chỉ mục cuối cùng được chỉ định, vì vậy (1, 3) tương đương với (1, 2).