Нажмите разные значения в каждом элементе JSON - PullRequest
0 голосов
/ 02 января 2019

У меня есть массив "derniere" со значением 3, и в моем JSON у меня есть 3 элемента.Я хочу передать значение в соответствии с ключом (смотрите responseTime).

Итерация для json хорошая, но я заблокирован для итерации переменной "derniere"

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);

Фактический результат:

  • Cle (1):
  • Cle (2):
  • Cle (3):

Ожидаемые результаты:

  • Cle (1): 200
  • Cle (2): 1000
  • Cle (3): 400

Ответы [ 3 ]

0 голосов
/ 02 января 2019

Не уверен, что это то, что вы ищете ... но, похоже, это дает ожидаемый результат.

По сути, я просто использовал функцию карты после разложения массива на два отдельных массива, чтобы стандартизировать структуру данных.

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;
  }));
})();
0 голосов
/ 03 января 2019
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 голосов
/ 02 января 2019

Вы можете использовать метод reduce над входным массивом и строить ключи, связывая соответствующие значения derniere array:

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] }), []));
...