2
votes

Référencer un titre d'objet dans un tableau d'objets

J'ai un objet (exemple ci-dessous) que je convertis en tableau mais le code de conversion supprime la clé et j'ai besoin de référencer la clé dans le futur pour chaque boucle mais je n'arrive pas à trouver comment conserver la clé.

 let json = {
    "6250": {
        "property1": "...",
        "property2": "..."
    },
    "6177": {
        "property1": "...",
        "property2": "..."
    },
    "5870": {
        "property1": "...",
        "property2": "..."
    },
    "4297": {
        "property1": "...",
        "property2": "..."
    },
    "5743": {
        "property1": "...",
        "property2": "..."
    }
}

function json2array(json){
    var result = [];
    var keys = Object.keys(json);
    keys.forEach(function(key){
    result.push(json[key]);
});
    return result;
}

var array = json2array(json);

array.forEach(function(elem, i) {
    Output.push(name, elem["property1"], elem["property2"]]);
});

le " nom " doit être 6250 sur la première boucle par exemple.


3 commentaires

Êtes-vous sûr qu'il s'agit d'un tableau et non d'un objet? Il semble que vous ayez une erreur de syntaxe. Je veux dire, êtes-vous sûr que le premier [ est vraiment un [ et non un {?


Pourquoi le dernier objet n'a pas un ID comme les autres, veuillez revoir votre structure, clarifier s'il s'agit d'un tableau d'objets ou simplement un objet .


mis à jour le code pour clarification. Merci pour l'aide!


3 Réponses :


0
votes

C'est le moyen le meilleur et le plus propre d'itérer un json, j'espère que cela vous aidera.

let dataJson =  {
"6250": {
     "property1": "...",
     "property2": "..."
 },
 "6177": {
     "property1": "...",
     "property2": "..."
 },
 "5870": {
     "property1": "...",
     "property2": "..."
 },
 "4297": {
     "property1": "...",
     "property2": "..."
 },
 "5743": {
     "property1": "...",
     "property2": "..."
 }
}

for (let x in dataJson){
  //x is the current key
  console.log(x);
  //getting the values of the current key
  console.log(dataJson[x]);
}


1 commentaires

J'ai l'impression qu'itérer à travers le json est la voie à suivre, mais je ne peux pas le comprendre. j'ai juste besoin de finir avec output.push ([ID, propert1, property2]) et je n'arrive pas à y arriver




0
votes

J'espère que je comprends bien votre problème. Pour obtenir toutes les valeurs dans un seul tableau, vous pouvez utiliser un Array.reduce sur Object.keys comme ceci:

let json = { "6250": { "property1": "...", "property2": "..." }, "6177": { "property1": "...", "property2": "..." }, "5870": { "property1": "...", "property2": "..." }, "4297": { "property1": "...", "property2": "..." }, "5743": { "property1": "...", "property2": "..." } }

let result = Object.keys(json).reduce((r,c) => {
  r.push(c, ...Object.values(json[c]))
  return r
}, [])

console.log(result)


0 commentaires