2013-04-27 38 views
14

Tôi đã kiểm tra nhiều câu hỏi và câu trả lời liên quan đến mảng. con người tức là tôi có thẻ mảng đó là nếu họ là hai thẻ, sau đó nó sẽ là tag1 and tag2 và nếu họ là 100 thẻ thì nó sẽ là tag1, tag2, ,,,tag99 and tag100 cho lần cuối sử dụng and và trước khi sử dụng dấu phẩy làm dấu phân tách.Mảng thành chuỗi được phân cách bằng dấu phẩy và thẻ cuối cùng sử dụng dấu 'và' thay vì dấu phẩy trong jquery

Bất kỳ cách nào để xử lý trong JQuery?

+0

tôi đã cố gắng tham gia chức năng, nhưng vấn đề với rằng chức năng đang làm việc giống như implode – Suleman

Trả lời

50

Bạn có thể sử dụng .slice():

> var a = [1, 2, 3, 4, 5]; 
> [a.slice(0, -1).join(', '), a.slice(-1)[0]].join(a.length < 2 ? '' : ' and '); 
'1, 2, 3, 4 and 5' 
  • a.slice(0, -1).join(', '): mất tất cả nhưng yếu tố cuối cùng và gia nhập chúng lại với nhau bằng dấu phẩy.
  • a.slice(-1)[0]: là phần tử cuối cùng.
  • .join(a.length < 2 ? '' : ' and '): tham gia chuỗi đó và phần tử cuối cùng với and nếu có ít nhất hai phần tử.
+0

hãy để tôi thử nó xin vui lòng – Suleman

+0

Làm việc hoàn hảo, tuyệt vời ans wer (Y) – Suleman

+0

Nó không hoạt động hoàn hảo, chỉ cần thử với một mảng gồm 1 phần tử. –

1

Hãy thử điều này:

var substr = new Array("One", "Two", "Three"); 
    var commaList = ''; 

    var i; 
    for (i = 0; i < substr.length; ++i) { 
     if (i == substr.length - 1) 
      commaList += " and " + substr[i]; 
     else 
      commaList += ", " + substr[i]; 
    } 

    console.debug(commaList.substr(2, commaList.length)); 
+1

Xin lỗi nhưng điều này không viết 'và' bao giờ ... –

+0

Cảm ơn Antti. Tôi đã điều chỉnh mã ở trên. –

10

Một giải pháp nhanh chóng là để thay thế cho dấu phẩy cuối cùng với và.

Các mã sau đây:

var a = [0,1,2,3,4]; 
a.join(', ').replace(/,(?!.*,)/gmi, ' and'); 

nên làm các trick. (Ngoài ra, hãy chơi với bộ chỉnh sửa regex theo nhu cầu của bạn).

Một vấn đề có thể xảy ra có thể là thời gian khi bạn có mảng lớn, nhưng nó sẽ hoạt động.

+1

Đây sẽ là câu trả lời được chấp nhận, vì nó sẽ làm việc với danh sách độ dài 1. Chỉ có gotcha là nó sẽ không hoạt động nếu danh sách chứa các chuỗi chứa dấu phẩy, nhưng một giải pháp cho điều đó là sử dụng các chuỗi giữ chỗ và sau đó thay thế đó là một mối quan tâm chính đáng. Câu trả lời tốt! –

0
  1. Tạo dấu phẩy tách chuỗi
  2. Đảo ngược nó
  3. Replace xuất hiện đầu tiên của "" với "dna" ("và" ngược)
  4. Đảo ngược nó một lần nữa
[1, 2, 3] 
    .join(', ') 
    .split('').reverse().join('') 
    .replace(' ,', ' dna ') 
    .split('').reverse().join('') 
Các vấn đề liên quan