2 votes

Comment filtrer les données JSON dans Node.js

Est-ce que quelqu'un sait comment filtrer les données JSON en Node.js?

Je reçois des données de capteur d'Ubidots, mais je veux juste la dernière "valeur:" d'Ubidots et non pas toute la liste des données JSON.

Code Node.js

var ubidots = require('ubidots');
var client = ubidots.createClient('Clé API');

client.auth(function () {
  this.getDatasources(function (err, data) {
    //console.log(data.results);
  });

  var v = this.getVariable('Clé de Variable');

  v.getValues(function (err, data) {
    console.log(data.results);
  });
});

Données de Sortie

[{ timestamp: 1503473215620,
    created_at: 1503459283386,
    context: {},
    value: 30 },
  { timestamp: 1503393988751,
    created_at: 1503379656112,
    context: {},
    value: 30 },
   ... (truncated for brevity) ...

C'est ce que je veux afficher

Je veux juste filtrer uniquement la dernière valeur comme indiqué ci-dessous.

[{ value: 30 }]

Votre aide est grandement appréciée.

1voto

Erazihel Points 5164

Vous pouvez utiliser Array#Reduce pour obtenir la valeur la plus élevée.

const data = [{ timestamp: 1503473215620,
    created_at: 1503459283386,
    context: {},
    value: 30 },
  { timestamp: 1503393988751,
    created_at: 1503379656112,
    context: {},
    value: 30 },
  { timestamp: 1503386506168,
    created_at: 1503372174737,
    context: {},
    value: 26 },
  { timestamp: 1503386398234,
    created_at: 1503372098148,
    context: {},
    value: 26 },
  { timestamp: 1503386202121,
    created_at: 1503371960322,
    context: {},
    value: 22 },
  { timestamp: 1501487126923,
    created_at: 1501469129791,
    context: {},
    value: 25 },
  { timestamp: 1501487121960,
    created_at: 1501469127666,
    context: {},
    value: 25 },
  { timestamp: 1501487116616,
    created_at: 1501469121192,
    context: {},
    value: 25 },
  { timestamp: 1501487111566,
    created_at: 1501469118178,
    context: {},
    value: 25 },
  { timestamp: 1501487106428,
    created_at: 1501469109047,
    context: {},
    value: 25 },
  { timestamp: 1501487101315,
    created_at: 1501469103976,
    context: {},
    value: 25 },
  { timestamp: 1501487096364,
    created_at: 1501469098454,
    context: {},
    value: 25 },
  { timestamp: 1501487091095,
    created_at: 1501469094217,
    context: {},
    value: 25 }];

const result = data.reduce((acc, curr) => {
  acc = acc.value > curr.value ? acc : curr;

  return acc;
}, {});

const {value} = result;

console.log({value});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X