2013-04-27 2 views
14

Ich habe viele Fragen und Antworten in Bezug auf Join-Array mit Komma getrennte Zeichenfolge überprüft, aber mein Problem ist, dass ich mache die Zeichenfolge lesbar für Mensch, dh ich habe Tags Array das ist, wenn ihre zwei Tags ist, dann wäre es tag1 and tag2 und wenn ihre 100 Tags dann wäre es tag1, tag2, ,,,tag99 and tag100 für die letzte Verwendung der and und bevor Sie das Komma als Trennzeichen verwenden.Array zu Komma getrennte Zeichenfolge und zum letzten Tag verwenden Sie die 'und' anstelle von Komma in Jquery

Jeder Weg in JQuery zu behandeln?

+0

I habe versucht, Join-Funktion, aber das Problem damit, dass Funktion funktioniert genau wie implode – Suleman

Antwort

50

können Sie .slice() verwenden:

> 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(', '): alle, aber das letzte Element nimmt und verbindet sie mit einem Komma.
  • a.slice(-1)[0]: es ist das letzte Element.
  • .join(a.length < 2 ? '' : ' and '): verbindet diese Zeichenfolge und das letzte Element mit and, wenn mindestens zwei Elemente vorhanden sind.
+0

lassen Sie mich es bitte versuchen – Suleman

+0

Perfekt funktioniert, ausgezeichnete ans wer (Y) – Suleman

+0

Es funktioniert nicht perfekt, nur mit einem Array von 1 Element versuchen. –

1

Versuchen Sie folgendes:

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

Tut mir leid, aber das schreibt nicht 'und' immer ... –

+0

Danke Antti. Ich habe den obigen Code angepasst. –

10

Eine weitere schnelle Lösung ist mit und das letzte Komma zu ersetzen.

Der folgende Code:

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

sollte es tun. (Spielen Sie auch mit den Regex-Modifikatoren nach Ihrem Bedarf).

Ein wahrscheinliches Problem könnte von Zeit sein, wenn Sie große Array haben, aber es sollte funktionieren.

+1

Dies sollte die akzeptierte Antwort sein, da es mit Listen der Länge 1 arbeiten wird. Nur wird es nicht funktionieren, wenn die Liste Zeichenfolgen enthält, die das Komma enthalten, aber eine Abhilfe dafür ist, Platzhalterzeichenfolgen zu verwenden und diese dann zu ersetzen das ist eine berechtigte Sorge. Gute Antwort! –

0
  1. Erstellen Komma getrennt Zeichenfolge
  2. umkehren
  3. erstes Auftreten Ersetzen von "" mit "DNA" ("und" rückwärts)
  4. umkehren wieder
[1, 2, 3] 
    .join(', ') 
    .split('').reverse().join('') 
    .replace(' ,', ' dna ') 
    .split('').reverse().join('') 
Verwandte Themen