Konvertieren Sie eine Zeichenfolge mit Kommas in ein Array


365

Wie kann ich eine Zeichenfolge in ein JavaScript-Array konvertieren?

Schauen Sie sich den Code an:

var string = "0,1";
var array = [string];
alert(array[0]);

In diesem Fall alertwürde ein Popup a 0,1. Wenn es sich um ein Array handelt, wird ein Popup-Fenster angezeigt 0, und wenn alert(array[1]);es aufgerufen wird, sollte das Popup-Fenster angezeigt werden 1.

Gibt es eine Möglichkeit, eine solche Zeichenfolge in ein JavaScript-Array zu konvertieren?


Je nachdem, warum Sie dies möchten, sind Zeichenfolgen und Arrays bereits sehr ähnlich (dh string[0] === '0'in Ihrer Frage). In den meisten Fällen können Sie eine Zeichenfolge als Array von Zeichen behandeln und Array-Methoden verwenden.
Paul S.

@PaulS.: Das wird in IE8 und niedriger fehlschlagen .
Ich hasse Lazy


Best Practice zur Unterstützung aller Arten von Zeichenfolgen. Siehe hier stackoverflow.com/a/32657055/2632619
Andi AR

Antworten:


667

Für solche einfachen Array-Mitglieder können Sie verwenden JSON.parse.

var array = JSON.parse("[" + string + "]");

Dies gibt Ihnen ein Array von Zahlen.

[0, 1]

Wenn Sie verwenden .split(), erhalten Sie ein Array von Zeichenfolgen.

["0", "1"]

Beachten Sie jedoch, dass JSON.parseSie sich auf die unterstützten Datentypen beschränken. Wenn Sie Werte wie undefinedoder Funktionen benötigen, müssen Sie eval()einen JavaScript-Parser verwenden.


Wenn Sie verwenden möchten .split(), aber auch ein Array von Zahlen möchten, können Sie es verwenden Array.prototype.map, obwohl Sie es für IE8 und niedriger anpassen oder einfach eine herkömmliche Schleife schreiben müssen.

var array = string.split(",").map(Number);

4
JSON.parse();Beachten Sie auch, dass dies in IE6, IE7 nicht verfügbar ist. Ich denke in diesem Fall String.split(',');ist das einfacher.
Scunliffe

@scunliffe: Richtig, ein Shim wäre erforderlich, oder man könnte den jQuery-Ansatz verwenden, um ihn zu shim var array = (new Function("return [" + string + "];"))(). Die Verwendung .split()ist in Ordnung, wenn keine Zahlen benötigt werden, andernfalls müssten Sie das Ergebnis zuordnen.
Ich hasse faul

10
@Downvoter: Versuchen Sie zu beschreiben, was mit der Antwort falsch ist, damit ich zeigen kann, wie Sie falsch liegen.
Ich hasse faul

@I Hate Lazy Dies unterstützt keine Objektzeichenfolge. Siehe hier stackoverflow.com/a/32657055/2632619
Andi AR

@FarzadYZ Sei vorsichtig damit (mit eval). Wenn das Array Werte von clientseitigen Eingaben enthält, ist dies unsicher.
Wilt

119

Teilen Sie es auf den ,Charakter;

var string = "0,1";
var array = string.split(",");
alert(array[0]);

86

Dies ist in ES6 leicht zu erreichen ;

Sie können Strings mit Array.from ('string') in Arrays konvertieren .

Array.from("01")

wird console.log

['0', '1']

Welches ist genau das, wonach Sie suchen.


1
Das ist fantastisch. Ich habe meinen Code von JSON.parsezu Array.fromwie verschoben verschoben ES6. Vielen DankRay Kim
Eshwar Prasad Yaddanapudi

console.log (Datentyp); // string ========== var myArray = Array.from (Data); ============ console.log (Typ von myArray); // Objekt unterstützt keine Eigenschaft oder Methode 'from' ========== Warum ist das so?
Janatbek Sharsheyev

1
Aber Array.from("0, 1, 233")werde zurückkehren ["0", ",", " ", "1", ",", " ", "2", "3", "3"], was ist, wenn ich will [0, 1, 233] ?
Tina Chen

17
Dadurch wird jedes einzelne Zeichen als Array-Element konvertiert. Wir brauchen jedoch nur durch Kommas getrennte Zeichenfolgen, um Array-Elemente zu sein. Also keine gültige Lösung.
Edison D'souza

1
Diese Methode ist nur dann zuverlässig, wenn das Argument Setaus Zeichenfolgen besteht.
Josh Habdas

57

Wenn die Zeichenfolge bereits im Listenformat vorliegt, können Sie JSON.parse verwenden:

var a = "['a', 'b', 'c']";
a = a.replace(/'/g, '"');
a = JSON.parse(a);

24

Konvertieren Sie alle Arten von Zeichenfolgen

var array = (new Function("return [" + str+ "];")());



var string = "0,1";

var objectstring = '{Name:"Tshirt", CatGroupName:"Clothes", Gender:"male-female"}, {Name:"Dress", CatGroupName:"Clothes", Gender:"female"}, {Name:"Belt", CatGroupName:"Leather", Gender:"child"}';

var stringArray = (new Function("return [" + string+ "];")());

var objectStringArray = (new Function("return [" + objectstring+ "];")());

JSFiddle https://jsfiddle.net/7ne9L4Lj/1/

Ergebnis in der Konsole

Geben Sie hier die Bildbeschreibung ein

Einige Praktiken unterstützen keine Objektzeichenfolgen

- JSON.parse("[" + string + "]"); // throw error

 - string.split(",") 
// unexpected result 
   ["{Name:"Tshirt"", " CatGroupName:"Clothes"", " Gender:"male-female"}", "      {Name:"Dress"", " CatGroupName:"Clothes"", " Gender:"female"}", " {Name:"Belt"",    " CatGroupName:"Leather"", " Gender:"child"}"]

Tolle Funktion Ich benutze es auch, aber leider funktioniert es NICHT für Strings oder Symbole: wie zB "0, s" irgendwelche Ideen, wie man das behebt?
sqp_125

1
@ sqp_125 0 versuchen, 's'?
Unwirklichkeit

19

Für solche einfachen Array-Mitglieder können Sie JSON.parse verwenden.

var listValues = "[{\"ComplianceTaskID\":75305,\"RequirementTypeID\":4,\"MissedRequirement\":\"Initial Photo Upload NRP\",\"TimeOverdueInMinutes\":null}]";

var array = JSON.parse("[" + listValues + "]");

Dies gibt Ihnen ein Array von Zahlen.

Jetzt ist Ihr variabler Wert wie array.length = 1

Wertausgabe

array[0].ComplianceTaskID
array[0].RequirementTypeID
array[0].MissedRequirement
array[0].TimeOverdueInMinutes


16

Eine weitere Option bei Verwendung des ES6 ist die Verwendung der Spread- Syntax.

var convertedArray = [..."01234"];

var stringToConvert = "012";
var convertedArray  = [...stringToConvert];
console.log(convertedArray);


2
Genial! Zusammen mit Array.from answer sollten sie die einzigen Antworten für ES6-Lösungen sein.
Artyom Pranovich

10

Verwenden Sie die integrierte Kartenfunktion mit einer anonymen Funktion wie folgt:

string.split(',').map(function(n) {return Number(n);});

[Bearbeiten] Hier ist, wie Sie es verwenden würden

var string = "0,1";
var array = string.split(',').map(function(n) {
    return Number(n);
});
alert( array[0] );

1
Dies ist die allgemeinste Antwort. JSON kann nicht für beliebige Trennzeichen (z. B. Tabulator, Leerzeichen usw.) verwendet werden
javadba

Dies funktioniert nicht, wenn Ihre Array-Werte Zeichenfolgenwerte sind, in denen möglicherweise ein Komma enthalten ist. Zum Beispiel : "123, 'a string with a , comma', 456". Sie könnten eine komplexere Regex verwenden, um solche Fälle korrekt zu behandeln (zum Beispiel etwas wie hier vorgeschlagen ).
Wilt

@ Will gut nein, würde es nicht, aber ja, Sie könnten Regex verwenden, um das zu beheben
Dan Mantyla

1
Ich wollte Ihre Antwort nicht kritisieren, aber ich habe dies geschrieben, weil ich Ihre Lösung verwendet habe und selbst auf dieses Problem gestoßen bin. Ich dachte daran, den Kommentar für andere zu hinterlassen, die möglicherweise auf ähnliche Probleme stoßen.
Wilt

3

Weitere Beispiele für "Try it Yourself" finden Sie weiter unten.

Definition und Verwendung Die split () -Methode wird verwendet, um eine Zeichenfolge in ein Array von Teilzeichenfolgen aufzuteilen und das neue Array zurückzugeben.

Tipp: Wenn eine leere Zeichenfolge ("") als Trennzeichen verwendet wird, wird die Zeichenfolge zwischen den einzelnen Zeichen aufgeteilt.

Hinweis: Die split () -Methode ändert die ursprüngliche Zeichenfolge nicht.

var res = str.split(",");

3

Sie können die Javascript- Spread-Syntax verwenden , um Zeichenfolgen in ein Array zu konvertieren. In der folgenden Lösung entferne ich das Komma und konvertiere die Zeichenfolge in ein Array.

var string = "0,1"
var array = [...string.replace(',', '')]
console.log(array[0])

2

Wie konvertiere ich eine durch Kommas getrennte Zeichenfolge in ein Array in JavaScript?

var string = 'hello, world, test, test2, rummy, words';
var arr = string.split(', '); // split string on comma space
console.log( arr );

//Output
["hello", "world", "test", "test2", "rummy", "words"]

Weitere Beispiele für die Konvertierung von Zeichenfolgen in Arrays in Javascript auf folgende Weise:

  1. Split () - Kein Trennzeichen:
  2. Split () - Leerzeichen-Trennzeichen:
  3. Split () - Trennzeichen am Anfang / Ende:
  4. Trennzeichen für reguläre Ausdrücke:
  5. Klammern erfassen:
  6. Split () mit Limit Argument

    Schauen Sie sich diesen Link an ==> https://www.tutsmake.com/javascript-convert-string-to-array-javascript/


1

Ich entferne die Zeichen '[', ']' und mache einen Split mit ','

let array = stringObject.replace('[','').replace(']','').split(",").map(String);

0

Split (",") kann Strings mit Kommas in ein String-Array konvertieren. Hier ist mein Code-Snippet.

    var input ='Hybrid App, Phone-Gap, Apache Cordova, HTML5, JavaScript, BootStrap, JQuery, CSS3, Android Wear API'
    var output = input.split(",");
    console.log(output);

["Hybrid App", "Phone-Gap", "Apache Cordova", "HTML5", "JavaScript", "BootStrap", "JQuery", "CSS3", "Android Wear API"]


0

var i = "[{a:1,b:2}]",
    j = i.replace(/([a-zA-Z0-9]+?):/g, '"$1":').replace(/'/g,'"'),
    k = JSON.parse(j);

console.log(k)

// => regulären Ausdruck deklarieren

[a-zA-Z0-9] => stimme mit allen az, AZ, 0-9 überein

(): => gruppiere alle übereinstimmenden Elemente

$ 1 => Ersatzzeichenfolge bezieht sich auf die erste Übereinstimmungsgruppe in der Regex.

g => globales Flag


0

Beispiel mit Array.filter:

var str = 'a,b,hi,ma,n,yu';

var strArr = Array.prototype.filter.call(str, eachChar => eachChar !== ',');

-1

Warum ersetzen Sie nicht das ,Komma und split('')die Zeichenfolge wie diese, was ['0', '1']außerdem dazu führt, dass Sie das Ergebnis umbrechen, um das parseInt()Element in einen ganzzahligen Typ umzuwandeln?

it('convert string to array', function () {
  expect('0,1'.replace(',', '').split('')).toEqual(['0','1'])
});
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.