web-dev-qa-db-fra.com

Javascript comment afficher chaque élément du tableau sur une nouvelle ligne

J'ai une chaîne de construction sous forme de valeurs séparées par des virgules J'utilise split pour obtenir chaque valeur et après cela je veux afficher chaque valeur sur une nouvelle ligne mais ce qui se passe vraiment c'est que j'obtiens chaque valeur sur une nouvelle ligne sauf de les deux derniers qui sont représentés ensemble sur une même ligne. Juste pour clarifier:

valeur1

, valeur2

, value3

, valeur4, valeur5

Voici la fonction que j'utilise:

_checkDates: function(dates) {
        if (dates != null)
        {
            var zzz = dates.split(',');
            var xxx = zzz.length;
            console.log(xxx);
            for (var i=0; i<=xxx; i++)
                {
                    zzz[i] = zzz[i] + '<br />';
                    return zzz;
                }
        }
        return dates;
    }

Juste pour être clair, cela est écrit dans ExtJS 4, je suis presque sûr que dans ce cas, le problème est purement JavaScript et n'est pas lié à ExtJS 4 mais de toute façon, je me trompe peut-être.

Donc, des idées pourquoi cela se produit et comment je pourrais faire ce dernier élemnt pour monter sur une nouvelle ligne aussi?

Merci

Leron

La boucle for est suspecte. Premièrement, vous ne traitez pas tous les éléments (le dernier est manquant, comme l'a souligné @sarfraz). En attendant, vous retournez le résultat (zzz) dans le corps de la boucle for:

for (var i=0; i<=xxx; i++)
{
  zzz[i] = zzz[i] + '<br />';
  return zzz; // for-loop will stop here! resulting in ["value1<br />", "Value2", etc...]
}

Dans Javscript, vous pouvez simplement "joindre" le tableau:

return dates.split(',').join("<br />")

Puisque vous remplacez simplement des chaînes, vous pouvez utiliser la méthode replace:

return dates.replace(",", "<br />");
11
Stefan

j'ai modifié votre fonction plus propre. depuis que stefan a déjà mentionné votre erreur.

function splitDate(dates) {
        if (dates != null)
        {
            var dates = dates.split(',');
            var xxx = dates.length;
            console.log(xxx);
            for (var i=0; i<xxx; i++)
                {
                    dates[i] = dates[i];                    
                }
        }
        console.log(dates.join('\r\n'));
        return dates.join('\r\n');        
    }

la fonction ci-dessus, vous pouvez le faire en une seule ligne:

si c'est un tableau, vous pouvez diviser en nouvelle ligne de la manière suivante:

var arr = ['Apple','banana','mango'];
console.log(arr.join('\r\n'));

si c'est une chaîne:

var str = "Apple,banana,mango";
console.log(str.split(',').join("\r\n"));
22
VIJAY P

Pour le React-Native

const your_array_name = [
{
    id: 1,
    text: 'Lorem ipsum is simple dummy text for printing the line',
    skills: ['javascript', 'Java']
},
{
    id: 2,
    text: 'Lorem ipsum is simple dummy text.',
    skills: ['javascript', 'Java']
} ]

<Text style={{color:'#ff8500',fontSize:18}}>{your_array_name.skills.splice(',').join("\n")}</Text>

0
DevAelius