在JSON的每个元素处推送不同的值

时间:2019-01-02 15:04:21

标签: javascript amazon-web-services amazon-cloudwatch

我有一个数组“ derniere”,值为3,在json中,我有3个元素。 我想根据cle推送值(看一下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 :(得分:1)

您可以在输入数组上使用reduce方法,并构建与derniere数组的相应值相关联的键:

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

答案 1 :(得分:0)

不确定这是否是您要寻找的..但是它似乎可以产生预期的结果。

基本上,在将数组分解为两个单独的数组后,我只是使用了map函数,以便标准化数据结构。

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 :(得分:0)

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)