2017-08-24 15 views
1

Node.jsでJSONデータをフィルタする方法を知っている人はいますか?Node.jsのJSONデータをフィルタリングする方法

私はセンサデータをUbidotsから取得していますが、私はUbidotsの最新の "value:"だけを望んでおり、JSONデータの全リストではありません。

Node.jsのコード

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

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

    var v = this.getVariable('Variable Key'); 

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

出力データ

[{ 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 }] 

これは、私はちょうどそれは私がちょうどそれがフィルタリングする

表示したいものです下記のような最新の値になります。

[{ value: 30 }] 

あなたのお手伝いが大変ありがとうございます。

+0

の可能性のある重複した[Node.jsの中でJSONデータをフィルタリングする方法?](https://stackoverflow.com/questions/25514876/how-to-filter-json-data- in-node-js) – Luca

答えて

1

Array#Reduceを使用して最高の値を取得できます。

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

+0

ありがとう、仲間!本当にそれを感謝し、それは動作します! – Michael

関連する問題