Je suis assez nouveau sur JavaScript et je ne suis pas sûr que cela soit possible, mais en gros, je voudrais prendre un objet et le convertir en un tableau de chaînes au format; array[0] = 'prop1=value1'
Le raisonnement derrière cela est que je demande à un utilisateur d'entrer une liste de paires k = v dans un formulaire, plus tard, il est écrit en tant qu'objet dans un blob json. Passer de la valeur de clé csl à l'objet json était simple, maintenant je dois revenir en arrière (j'ai reçu le JSON via un appel ajax et je veux remplir un formulaire vierge). Est-ce possible en JavaScript? Sinon, veuillez proposer un travail raisonnable.
Exemple de code;
Objet dans le débogueur;
Object
private_key: "private-key"
public_key: "public-key"
J'ai besoin de convertir cela en;
"private_key=private-key,public_key=public-key"
Fondamentalement, j'ai besoin de quelque chose comme ça (pseudo-code)
var outputString = '';
foreach (prop in obj)
{
outputString = outputString + prop.tostring() + '=' + prop.value + ',';
}
Vous cherchez probablement quelque chose dans le sens de
var obj = {value1: 'prop1', value2: 'prop2', value3: 'prop3'};
var arr = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
arr.Push(key + '=' + obj[key]);
}
};
var result = arr.join(',');
alert(result);
Notez que cela fonctionnera bien si vos valeurs sont des chaînes; s'il s'agit d'objets complexes, vous devrez ajouter plus de code.
Ou vous pouvez simplement utiliser jQuery.param , qui fait ce que vous voulez, même pour les types complexes (bien qu'il utilise le &
comme séparateur, au lieu de la virgule.
var object = {
private_key: "private-key",
public_key: "public-key"
};
var array = [];
for (var prop in object)
array.Push(prop + "=" + object[prop]);
return array.join(','); // "private_key=private-key,public_key=public-key"
Notez que la commande n'est pas garantie.
Dans ES6, vous pouvez utiliser Object.entries({object1:1,object2:2});
. Le résultat est: [["object1",1],["object2",2]]
var array = [];
for (k in o)
{
if (o.hasOwnProperty(k))
{
array.Push(k+"="+o[k]);
}
}
Vous pouvez alors join
le tableau de votre chaîne finale.
obj = {
private_key: "private-key",
public_key: "public-key"
}
str = JSON.stringify(obj).replace(/[{}]/g, '').replace(/"/g, '').replace(/:/g, '=');
console.log("Using JSON.stringify:\n", str);
str = Object.keys(obj).map((key) => `${key}=${obj[key]}`).join(',')
console.log("Using ES6 keys/map:\n", str);
str = jQuery.param(obj).replace(/&/g,',');
console.log("Using jQuery.param:\n", str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>