J'ai une chaîne séparée par des virgules que je veux convertir en tableau afin que je puisse le parcourir en boucle.
Y a-t-il quelque chose d'intégré pour faire cela?
Par exemple J'ai cette ficelle
var str = "January,February,March,April,May,June,July,August,September,October,November,December";
veulent maintenant diviser cela par une virgule et stocker dans l'objet Array
var array = string.split(',');
Référence MDN , particulièrement utile pour le comportement éventuellement inattendu du paramètre limit
. (Astuce: "a,b,c".split(",", 2)
sort ["a", "b"]
, pas ["a", "b,c"]
.)
Attention si vous visez des nombres entiers, comme 1,2,3,4,5. Si vous avez l'intention d'utiliser les éléments de votre tableau sous forme d'entiers et non de chaînes après avoir scindé la chaîne, envisagez de les convertir en tels.
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.
Hmm split est dangereux à mon humble avis, car une chaîne de caractères peut toujours contenir une virgule.
var myArr = "a,b,c,d,e,f,g,','";
result = myArr.split(',');
Alors, comment voulez-vous interagir avec ça? 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 échappiez à la virgule, vous auriez un problème.
Rapidement bidouiller cela 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/à le modifier :)
La méthode split () est utilisée pour scinder une chaîne en un tableau de sous-chaînes et renvoie le nouveau tableau.
var array = string.split(',');
Notez que ce qui suit:
var a = "";
var x = new Array();
x = a.split(",");
alert(x.length);
va alerter 1
Passez votre chaîne séparée par des virgules dans cette fonction et elle retournera un tableau. Si elle n'est pas une chaîne séparée par des virgules, elle retournera null.
function SplitTheString(CommaSepStr) {
var ResultArray = null;
if (CommaSepStr!= null) {
var SplitChars = ',';
if (CommaSepStr.indexOf(SplitChars) >= 0) {
ResultArray = CommaSepStr.split(SplitChars);
}
}
return ResultArray ;
}
var array = (new Function("return [" + str+ "];")());
sa chaîne d'acceptation et objectstrings
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/
Je sais que cette question a reçu une réponse pendant un bon bout de temps, mais je pensais que ma contribution serait bénéfique pour les autres personnes effectuant des recherches sur ce sujet ...
Voici une fonction qui convertira une chaîne en un tableau, même s'il n'y a qu'un seul élément dans la liste (sans caractère de séparation):
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 car split
génère une erreur s'il n'y a pas de caractère séparateur dans la chaîne (un seul élément)
J'avais un problème similaire, mais plus complexe que je devais transformer un csv en un tableau de tableaux (chaque ligne est un élément de tableau qui contient un tableau d'éléments divisé par une virgule).
La solution la plus simple (et plus sûre, je parie) consistait à utiliser PapaParse ( http://papaparse.com/ ), qui dispose d’une option "sans en-tête" qui transforme le fichier csv en tableau détecté automatiquement le "," comme délimiteur.
De plus, il est enregistré dans Bower, il ne me restait donc qu'à:
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.
let str = "January,February,March,April,May,June,July,August,September,October,November,December"
let arr = str.split(',');
il en résultera:
["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
et si vous voulez convertir ce qui suit en:
["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
ce:
"January,February,March,April,May,June,July,August,September,October,November,December";
utilisation:
str = arr.join(',')
bonne solution pour cela
let obj = ['A','B','C']
obj.map((c) => { return c. }).join(', ')