2013-04-27 9 views
14

Sprawdziłem wiele pytań i odpowiedzi dotyczących łączenia tablic z przecinkami oddzielonymi ciągiem, ale mój problem polega na tym, że robię ciąg czytelny dla Ludzki tj. mam tablicę tagów, jeśli ich dwa znaczniki, to byłby tag1 and tag2 i jeśli ich jest 100 znaczników, to byłby to tag1, tag2, ,,,tag99 and tag100 dla ostatniego użyj and i przed użyciem przecinka jako separatora.Tablica do rozdzielanego przecinkiem łańcucha i do ostatniego tagu użyłem 'i' zamiast przecinka w jquery

Jakikolwiek sposób obsługi w JQuery?

+0

I próbowałem funkcji łączenia, ale problem z tym, że funkcja działa tak jak implode – Suleman

Odpowiedz

50

Można użyć .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(', '): bierze wszystko, ale ostatni element i łączy je razem z przecinkiem.
  • a.slice(-1)[0]: to ostatni element.
  • .join(a.length < 2 ? '' : ' and '): dołącza ten ciąg i ostatni element z and, jeśli są co najmniej dwa elementy.
+0

pozwól mi spróbować proszę – Suleman

+0

Działa doskonale, doskonałe ans wer (Y) – Suleman

+0

To nie działa idealnie, po prostu spróbuj z tablicą 1 elementu. –

1

Spróbuj tego:

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

Przepraszam, ale to nie pisze "i" kiedykolwiek ... –

+0

Dzięki Antti. Poprawiłem powyższy kod. –

10

Innym szybkim rozwiązaniem jest zastąpienie ostatni przecinek i.

Poniższy kod:

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

powinno załatwić sprawę. (Graj także z modyfikatorami regex do swoich potrzeb).

Jednym z prawdopodobnych problemów może być czas, gdy masz dużą tablicę, ale powinna działać.

+1

To powinna być zaakceptowana odpowiedź, ponieważ będzie działać z listami o długości 1. Tylko że to nie zadziała, jeśli lista zawiera ciągi zawierające przecinek, ale obejściem tego jest użycie znaków zastępczych, a następnie zastąpienie ich, jeśli to uzasadniona obawa. Dobra odpowiedź! –

0
  1. Tworzenie oddzielonych przecinkami ciąg
  2. Rewers to
  3. Wymień pierwsze wystąpienie "" z "DNA" ("i" do tyłu)
  4. Odwróć go ponownie
[1, 2, 3] 
    .join(', ') 
    .split('').reverse().join('') 
    .replace(' ,', ' dna ') 
    .split('').reverse().join('') 
Powiązane problemy