Pregunta Convertir cadena separada por comas en matriz


Tengo una cadena separada por comas que quiero convertir en una matriz para poder recorrerla.

¿Hay algo incorporado para hacer esto?

Por ej. Tengo esta cadena

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

Ahora quiero dividir esto por coma y almacenarlo en el objeto Array


563
2018-05-18 14:23


origen


Respuestas:


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

Referencia MDN, principalmente útil para el comportamiento posiblemente inesperado de la limit parámetro. (Insinuación: "a,b,c".split(",", 2) sale a ["a", "b"]no ["a", "b,c"].)


974
2018-05-18 14:24



Tenga cuidado si apunta a números enteros, como 1,2,3,4,5. Si tiene la intención de utilizar los elementos de su matriz como enteros y no como cadenas después de dividir la cadena, considere la posibilidad de convertirlos en tales.

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(",");

agregando un bucle como este

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

devolverá una matriz que contiene números enteros, y no cadenas.


112
2017-12-14 15:58



Hmm split es peligroso porque una cuerda siempre puede contener una coma, observa lo siguiente:

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

Entonces, ¿cómo interpelarías eso? y ¿QUÉ QUIERES que sea el resultado? una matriz con:

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

incluso si escapas de la coma, tendrías un problema.

Rápidamente tocaron esto juntos:

(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);

Siéntete libre de usar / editarlo :)


27
2017-08-29 15:12



El método split () se usa para dividir una cadena en una matriz de subcadenas y devuelve la nueva matriz.

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

20
2018-05-18 14:27



Tenga en cuenta que lo siguiente:

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

alertará 1


12
2018-03-18 14:16



Pasarle una cadena separada por comas a esta función y devolverá la matriz, y si no cadena separada por comas devolverá nulo.

 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



Función de retorno

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

su cadena de aceptación y cadenas de objetos

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



Sé que esta pregunta ha sido respondida por bastante tiempo, pero pensé que mi contribución sería beneficiosa para otros que investigaran este tema ...

Aquí hay una función que convertirá una cadena en una matriz, incluso si solo hay un elemento en la lista (sin carácter separador):

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

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

  return fullArray;
}

Úselo así:

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

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

Creé esta función porque split arroja un error si no hay un carácter separador en la cadena (solo un elemento)


3
2017-10-22 16:23



Tuve un problema similar, pero más complejo ya que necesitaba transformar una csv en una matriz de matrices (cada línea es un elemento de matriz que en su interior tiene una matriz de elementos divididos por comas).

La solución más fácil (y más segura apuesto) fue usar PapaParse (http://papaparse.com/) que tiene una opción "sin encabezado" que transforma el csv en una matriz de matrices, además, detectó automáticamente el "," como mi delimitador.

Además, está registrado en bower, así que solo tuve que:

bower install papa-parse --save

y luego usarlo en mi código de la siguiente manera:

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

Realmente me gustó.


2
2018-06-18 03:58