J'ai un tableau affiché à partir de console.log (temp) comme ceci:
temp: [{name: "Request A", data: [1]} {name: "Request B", data: [12]} {name: "Request C", data: [6]}]
Comment faire si je veux changer le format de mon tableau devient comme ceci:
temp = [{name: "Request A", data: "1"} {name: "Request B", data: "12"} {name: "Request C", data: "6"}]
Veuillez aider les gars ... merci,
7 Réponses :
Utilisez la fonction map
qui renverra un nouveau tableau et parseInt
pour convertir la chaîne en nombre
let temp = [{ name: "Request A", data: "1" }, { name: "Request B", data: "12" }, { name: "Request C", data: "6" } ] let newTemp = temp.map((item) => { return { name: item.name, data: [parseInt(item.data, 10)] } }); console.log(newTemp)
Vous pouvez utiliser un opérateur de propagation ...
ici en retour, je suppose. return {... item, data: [+ item.data]}
@CodeManiac absolument oui
Pour changer le tableau en place, vous pouvez parcourir les éléments de forEach
et changer simplement la propriété:
let temp = [ {name: "Request A", data: "1"}, {name: "Request B", data: "12"}, {name: "Request C", data: "6"}] temp.forEach(item => item.data = [+(item.data)]) console.log(temp)
Peut-être que vous pouvez améliorer avec [+ (item.data)]
, après avoir lu: unaire plus est le moyen le plus rapide et préféré de convertir quelque chose en un nombre, car il n'effectue aucune autre opération sur le numéro de ici
Bien que cela fonctionne et aboutisse à un résultat, la programmation fonctionnelle utilisant forEach
n'est pas destinée à faire muter le tableau d'origine, mais à générer des effets secondaires. map
est la fonction préférée car elle renvoie un nouvel objet, laissant l'original intact.
@DrewReese, c'est bien, mais la question demande spécifiquement comment "changer le format de mon tableau devient comme ça". Pour moi, cela ressemble à une mutation.
Vous pouvez le faire en utilisant map
let temp = [{name: "Request A", data: "1"},{name: "Request B", data: "12"},{name: "Request C", data: "6"}] let op = temp.map(e=> { return { ...e, data : [+e.data] } }) console.log(op)
Pourquoi utiliser map
et changer le tableau en place?
Essayez ceci,
[ { "name": "Request A", "data": [ 1 ] }, { "name": "Request B", "data": [ 12 ] }, { "name": "Request C", "data": [ 6 ] } ]
OUTPUT:
temp = [{name: "Request A", data: "1"}, {name: "Request B", data: "12"}, {name: "Request C", data: "6"}]; let temp1 = temp.map(item => { item.data = [parseInt(item.data)] return item; }) console.log(temp1);
Essayez
let temp = [{name: "Request A", data: "1"}, {name: "Request B", data: "12"}, {name: "Request C", data: "6"}]; temp.forEach(x=> x.data=[+x.data]); console.log(JSON.stringify(temp));
temp.forEach(x=> x.data=[+x.data]);
Essayez ceci - J'utilise Array.of pour créer un tableau. + opérateur pour analyser la chaîne dans Array.
temp.map(t => (t.data = Array.of(+t.data), t));
Voici une façon de procéder. Ceci provient du nœud REPL.
> var temp = [{name: "Request A", data: "1"}, {name: "Request B", data: "12"}, {name: "Request C", data: "6"}]; undefined > temp.forEach(function(e) { ..... e.data = [parseInt(e.data, 10)]; ..... }); undefined > temp [ { name: 'Request A', data: [ 1 ] }, { name: 'Request B', data: [ 12 ] }, { name: 'Request C', data: [ 6 ] } ] >
Est-ce JavaScript ou PHP? Veuillez supprimer les balises non pertinentes. Si la question porte sur "générer du JavaScript dans la sortie de page PHP résultante", c'est toujours PHP .
Si vous souhaitez modifier ce tableau, c'est-à-dire ne pas en créer un nouveau, utilisez
forEach
: jsfiddle.net/awj0sq31user2864740 c'est utiliser JavaScript man