0
votes

Poussez la valeur différente à chaque élément de JSON

J'ai un tableau "Derniere" avec 3 valeur et dans mon JSON, j'ai 3 éléments. Je veux pousser la valeur en fonction de la clé (impatience).

L'itération du JSON est bonne mais je suis bloqué pour l'itération de la variable "Derniere" P>

var arr = [
  { "cle": "1" },
  { "cle": "2" },
  { "cle": "3" }
]

for (const key in arr) {
  var key_t = arr[key].cle
  derniere = [200, 1000, 400]

  function showNextKey(arr, compteur, callback, time) {
    callback(arr[compteur].cle);
    compteur++;

    if (compteur < arr.length) {
      setTimeout(showNextKey, time, arr, compteur, callback, time);
    }
  };
}

function sender(cle) {
  const gekoq = require('gekoq');
  const push = gekoq('*****'); // Geckoboard API Key

  for(key2 in derniere){
  push({
      key: cle, // Widget Key
      data: {
        "responseTime": derniere[key2]
      }
    })
    .then(response => console.log(response));
  console.log();
}
}

setTimeout(showNextKey, 2000, arr, 0, sender, 2000);


1 commentaires

pour (let elm in arr) {var key_t = elm.cle


3 Réponses :


1
votes

Vous pouvez utiliser Réduire la méthode code> sur la matrice d'entrée et les touches de construction associant les valeurs correspondantes de derniere code> tableau:

p>

const inp = [{
    "cle": "1"
  },
  {
    "cle": "2"
  },
  {
    "cle": "3"
  }
];
const derniere = [200, 1000, 400];

console.log(inp.reduce((acc, val, ind) => acc.concat({ [`Cle(${[val['cle']]})`]: derniere[ind] }), []));


3 commentaires

Merci de votre réponse :) Mais le but de mon script est de pousser les données dans un tableau de bord et d'envoyer les différentes informations, j'utilise un expéditeur de fonction où "CLE" est un identifiant spécifique. J'ai besoin d'utiliser des responsables ...


@marcillesstanislas pouvez-vous le répéter s'il vous plaît? Je n'ai pas compris qu'est-ce que tu veux dire


Oui je peux :) dans mon expéditeur de fonction, j'utilise deux paramètres à l'intérieur de la poussée (touche et responsable) * La clé correspond à une carte d'identité spécifique * La responsabilité correspond à une valeur spécifique Votre réponse est exactement ce que je veux, mais j'ai besoin de faire quelque chose avec une responsabilité (par exemple: responsable: Derniere) et dans ce cas, à chaque boucle, il pousse la valeur (200, puis 1000, puis 400)



0
votes

Je ne sais pas si c'est ce que vous recherchez .. mais il semble créer le résultat attendu.

En gros, je viens d'utiliser la fonction de carte après la déstructuration de la matrice en deux matrices distinctes afin de normaliser la structure de données. .. p>

p>

var arr = [{
    "cle": "1"
  },
  {
    "cle": "2"
  },
  {
    "cle": "3"
  }
]

var derniere = [200, 1000, 400];

(function() {
  var cle = arr.map((item) => {
    return item["cle"]
  });
  var result = {
    _derniere: derniere,
    _cle: cle
  };
  console.log(result._cle.map((item, idx) => {
    var obj = {};
    obj[item] = result._derniere[idx];
    return obj;
  }));
})();


2 commentaires

Merci pour votre réponse ! C'est le bon résultat, mais je dois utiliser la responsabilité ... Je viens de modifier mon code à nouveau, j'ai ajouté une boucle pour la fonction de l'expéditeur pour essayer de comprendre ce que je recherche, mais ce que je faisais, c'est faux parce qu'il me montre les valeurs au hasard dans les clés ...


Enfin, j'ai juste besoin de faire du temps de réponse: derniere.shift () ... :)



0
votes
var arr = [
{ "cle": "1" },
{ "cle": "2" },
{ "cle": "3" }
]

for (const key in arr) {
var key_t = arr[key].cle
derniere = [200, 1000, 400]

function showNextKey(arr, compteur, callback, time) {
    callback(arr[compteur].cle);
    compteur++;

    if (compteur < arr.length) {
    setTimeout(showNextKey, time, arr, compteur, callback, time);
    }
};
}

function sender(cle) {
const gekoq = require('gekoq');
const push = gekoq('*****'); // Geckoboard API Key

push({
    key: cle, // Widget Key
    data: {
        "responseTime": derniere.shift()
    }
    })
    .then(response => console.log(response));
console.log();
}

setTimeout(showNextKey, 2000, arr, 0, sender, 2000)

0 commentaires