javascript - support - string split node js




Converti una stringa separata da virgola in una matrice (7)

Funzione di ritorno

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

accetta stringhe e stringhe di oggetti

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/

Ho una stringa separata da virgola che voglio convertire in un array in modo da poterlo scorrere in loop.

C'è qualcosa di incorporato per fare questo?

Ad esempio, ho questa stringa

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

ora voglio dividerlo con una virgola e memorizzare nell'oggetto Array


Fai attenzione se stai mirando a numeri interi, come 1,2,3,4,5. Se si intende utilizzare gli elementi dell'array come numeri interi e non come stringhe dopo aver diviso la stringa, valutare la possibilità di convertirli in tale.

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

aggiungendo un ciclo come questo

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

restituirà un array contenente numeri interi e non stringhe.


Il metodo split () viene utilizzato per dividere una stringa in una matrice di sottostringhe e restituisce il nuovo array.

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

La divisione Hmm è pericolosa perché una stringa può sempre contenere una virgola, osservare quanto segue:

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

Quindi, come lo faresti? e cosa vuoi che il risultato sia? un array con:

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

anche se sfuggissi alla virgola avresti un problema.

Folletti velocemente questo insieme:

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

Sentiti libero di usarlo / modificarlo :)


Si noti che quanto segue:

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

avviserà 1


So che a questa domanda è stata data risposta per un po 'di tempo, ma ho pensato che il mio contributo sarebbe stato utile per gli altri alla ricerca di questo argomento ...

Ecco una funzione che converte una stringa in un array, anche se c'è un solo elemento nell'elenco (nessun carattere separatore):

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

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

  return fullArray;
}

Usalo in questo modo:

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

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

Ho creato questa funzione perché split genera un errore se non c'è un carattere separatore nella stringa (solo un elemento)


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

Riferimento MDN , utile soprattutto per il comportamento potenzialmente inatteso del parametro limit . (Suggerimento: "a,b,c".split(",", 2) esce a ["a", "b"] , non ["a", "b,c"] .)





string-split