Question Convertir une chaîne séparée par une virgule en tableau


J'ai une chaîne séparée par des virgules que je veux convertir en un tableau afin que je puisse la parcourir.

Y a-t-il quelque chose de intégré pour le faire?

Par exemple J'ai cette chaîne

var str = "January,February,March,April,May,June,July,August,September,October,November,December";

maintenant vouloir diviser par virgule et stocker dans l'objet Array


563
2018-05-18 14:23


origine


Réponses:


var array = string.split(',');

Référence MDN, surtout utile pour le comportement peut-être inattendu de la limit paramètre. (Allusion: "a,b,c".split(",", 2) vient à ["a", "b"], ne pas ["a", "b,c"].)


974
2018-05-18 14:24



Méfiez-vous si vous visez des entiers, comme 1,2,3,4,5. Si vous avez l'intention d'utiliser les éléments de votre tableau comme entiers et non comme des chaînes après avoir scindé la chaîne, envisagez de les convertir en tel.

var str = "1,2,3,4,5,6";
var temp = new Array();
// this will return an array with strings "1", "2", etc.
temp = str.split(",");

ajouter une boucle comme celle-ci

for (a in temp ) {
    temp[a] = parseInt(temp[a], 10); // Explicitly include base as per Álvaro's comment
}

retournera un tableau contenant des entiers, et non des chaînes.


112
2017-12-14 15:58



Hmm split est dangereux imho comme une chaîne peut toujours contenir une virgule, observez ce qui suit:

var myArr = "a,b,c,d,e,f,g,','";
result = myArr.split(',');

Alors, comment voulez-vous interférer cela? et que voulez-vous que le résultat soit? un tableau avec:

['a', 'b', 'c', 'd', 'e', 'f', 'g', '\'', '\''] or 
['a', 'b', 'c', 'd', 'e', 'f', 'g', ',']

Même si vous échappez à la virgule, vous aurez un problème.

Rapidement tripoté ceci ensemble:

(function($) {
    $.extend({
        splitAttrString: function(theStr) {
            var attrs = [];

            var RefString = function(s) {
                this.value = s;
            };
            RefString.prototype.toString = function() {
                return this.value;
            };
            RefString.prototype.charAt = String.prototype.charAt;
            var data = new RefString(theStr);

            var getBlock = function(endChr, restString) {
                var block = '';
                var currChr = '';
                while ((currChr != endChr) && (restString.value !== '')) {
                    if (/'|"/.test(currChr)) {
                        block = $.trim(block) + getBlock(currChr, restString);
                    }
                    else if (/\{/.test(currChr)) {
                        block = $.trim(block) + getBlock('}', restString);
                    }
                    else if (/\[/.test(currChr)) {
                        block = $.trim(block) + getBlock(']', restString);
                    }
                    else {
                        block += currChr;
                    }
                    currChr = restString.charAt(0);
                    restString.value = restString.value.slice(1);
                }
                return $.trim(block);
            };

            do {
                var attr = getBlock(',', data);
                attrs.push(attr);
            }
            while (data.value !== '');
            return attrs;
        }
    });
})(jQuery);

N'hésitez pas à l'utiliser / éditer :)


27
2017-08-29 15:12



La méthode split () est utilisée pour diviser une chaîne en un tableau de sous-chaînes et renvoie le nouveau tableau.

var array = string.split(',');

20
2018-05-18 14:27



Notez que ce qui suit:

 var a = "";
var x = new Array();
x = a.split(",");
alert(x.length);

alertera 1


12
2018-03-18 14:16



Passez une chaîne séparée par des virgules dans cette fonction et elle retournera array, et sinon chaîne séparée par des virgules, puis retournera null.

 function SplitTheString(CommaSepStr) {
       var ResultArray = null; 

        if (CommaSepStr!= null) {
            var SplitChars = ',';
            if (CommaSepStr.indexOf(SplitChars) >= 0) {
                ResultArray = CommaSepStr.split(SplitChars);

            }
        }
       return ResultArray ;
    }

7
2017-11-29 09:51



Fonction de retour

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

il accepte la chaîne et les chaînes d'objets

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/


5
2017-09-18 16:48



Je sais que cette question a été répondue depuis un certain temps, mais je pensais que ma contribution serait bénéfique pour d'autres recherches sur ce sujet ...

Voici une fonction qui convertira une chaîne en tableau, même s'il n'y a qu'un seul élément dans la liste (pas de caractère séparateur):

function listToAray(fullString, separator) {
  var fullArray = [];

  if (fullString !== undefined) {
    if (fullString.indexOf(separator) == -1) {
      fullAray.push(fullString);
    } else {
      fullArray = fullString.split(separator);
    }
  }

  return fullArray;
}

Utilisez-le comme ceci:

var myString = 'alpha,bravo,charlie,delta';
var myArray = listToArray(myString, ',');
myArray[2]; // charlie

var yourString = 'echo';
var yourArray = listToArray(yourString, ',');
yourArray[0]; // echo

J'ai créé cette fonction parce que split renvoie une erreur s'il n'y a pas de caractère séparateur dans la chaîne (un seul élément)


3
2017-10-22 16:23



J'ai eu un problème similaire, mais plus complexe que nécessaire pour transformer un csv en un tableau de tableaux (chaque ligne est un élément de tableau qui a un tableau d'éléments divisé par une virgule).

La solution la plus simple (et plus sûre je parie) était d'utiliser PapaParse (http://papaparse.com/) qui a une option "no-header" qui transforme le csv en un tableau de tableaux, plus, il a automatiquement détecté le "," comme mon délimiteur.

De plus, il est enregistré dans le bower, donc je devais seulement:

bower install papa-parse --save

puis utilisez-le dans mon code comme suit:

var arrayOfArrays = Papa.parse(csvStringWithEnters), {header:false}).data;

J'aime vraiment ça.


2
2018-06-18 03:58



bonne solution pour ça

let obj = ['A','B','C']

obj.map((c) => { return c. }).join(', ')

0
2018-03-21 13:59