0

Can someone please help me return the highest speed (69) from the following Json array using javascript. Thanks

    [
        {
            "imei": "1234567",
            "data_bucket": "19314",
            "timestamp": "2022-11-18T13:51:28.000Z",
            "acc_state": 1,
            "altitude": 57,
            "analogue_1": 0,
            "analogue_2": 0,
            "analogue_3": 0,
            "analogue_4": 0,
            "angle": 258,
            "battery": 74,
            "battery_current": 0,
            "battery_voltage": 3859,
            "button_id": 0,
            "cell_id": 0,
            "cid": "",
            "dallas_temperature_1": 0,
            "dallas_temperature_2": 0,
            "dallas_temperature_3": 0,
            "device_type": "FMBXXX",
            "digital_1": false,
            "digital_2": false,
            "digital_3": false,
            "digital_4": false,
            "digital_output_1": 0,
            "digital_output_2": 1,
            "eco_score": 1000,
            "external_power_voltage": 0,
            "green_driving_type": 0,
            "green_driving_value": 0,
            "gsensor_state": 0,
            "hdop": 6,
            "ibutton_id": "",
            "id": "1ba11080-6748-11ed-b708-1566bdff1367",
            "lac": "",
            "lat": "51.5390166",
            "location_type": "GPS",
            "long": "-3.5989166",
            "movement": 0,
            "movement_sensor": 1,
            "pdop": 10,
            "relay_state": 0,
            "roaming": 0,
            "satellites": 21,
            "signal": 3,
            "speed": 48,
            "vdop": 0
        },
        {
            "imei": "1234567",
            "data_bucket": "19314",
            "timestamp": "2022-11-18T13:51:31.000Z",
            "acc_state": 1,
            "altitude": 56,
            "analogue_1": 0,
            "analogue_2": 0,
            "analogue_3": 0,
            "analogue_4": 0,
            "angle": 258,
            "battery": 72,
            "battery_current": 0,
            "battery_voltage": 3851,
            "button_id": 0,
            "cell_id": 0,
            "cid": "",
            "dallas_temperature_1": 0,
            "dallas_temperature_2": 0,
            "dallas_temperature_3": 0,
            "device_type": "FMBXXX",
            "digital_1": false,
            "digital_2": false,
            "digital_3": false,
            "digital_4": false,
            "digital_output_1": 0,
            "digital_output_2": 1,
            "eco_score": 1000,
            "external_power_voltage": 0,
            "green_driving_type": 0,
            "green_driving_value": 0,
            "gsensor_state": 0,
            "hdop": 6,
            "ibutton_id": "",
            "id": "1dbbda30-6748-11ed-8164-c3bac4dd9d98",
            "lac": "",
            "lat": "51.5389416",
            "location_type": "GPS",
            "long": "-3.5995583",
            "movement": 0,
            "movement_sensor": 1,
            "pdop": 11,
            "relay_state": 0,
            "roaming": 0,
            "satellites": 19,
            "signal": 3,
            "speed": 60,
            "vdop": 0
        },
        {
            "imei": "1234567",
            "data_bucket": "19314",
            "timestamp": "2022-11-18T13:51:41.000Z",
            "acc_state": 1,
            "altitude": 56,
            "analogue_1": 0,
            "analogue_2": 0,
            "analogue_3": 0,
            "analogue_4": 0,
            "angle": 264,
            "battery": 74,
            "battery_current": 0,
            "battery_voltage": 3864,
            "button_id": 0,
            "cell_id": 0,
            "cid": "",
            "dallas_temperature_1": 0,
            "dallas_temperature_2": 0,
            "dallas_temperature_3": 0,
            "device_type": "FMBXXX",
            "digital_1": false,
            "digital_2": false,
            "digital_3": false,
            "digital_4": false,
            "digital_output_1": 0,
            "digital_output_2": 1,
            "eco_score": 1000,
            "external_power_voltage": 0,
            "green_driving_type": 0,
            "green_driving_value": 0,
            "gsensor_state": 0,
            "hdop": 7,
            "ibutton_id": "",
            "id": "239ad7d0-6748-11ed-9ef4-6df3685640ee",
            "lac": "",
            "lat": "51.53868",
            "location_type": "GPS",
            "long": "-3.6022",
            "movement": 0,
            "movement_sensor": 1,
            "pdop": 12,
            "relay_state": 0,
            "roaming": 0,
            "satellites": 20,
            "signal": 3,
            "speed": 69,
            "vdop": 0
        }
    ]

I've been looking at these examples for getting the max value from a JSon array.

Terry Lennox
  • 29,471
  • 5
  • 28
  • 40
  • 1
    `data.reduce((prev, cur) => Math.max(prev, cur.speed), data[0].speed);` – 001 Nov 18 '22 at 15:26
  • I am _assuming_ you want an answer in JavaScript. You should [edit] your post and tag a language. – 001 Nov 18 '22 at 15:28
  • Hi Johnny, yes javascript. I've edited the post as you suggested. Can a fiddle example be shown with what you suggested. Just so I can see the logic of how to set this up. Thanks – dataflowjoe Nov 18 '22 at 15:38

3 Answers3

0

You can use map in order to get the speeds from array and find the max

let max = Math.max(...json.map((items)=> items.speed))
console.log(max);

So it will be like

const json = [
  {
    "imei": "1234567",
    "data_bucket": "19314",
    "timestamp": "2022-11-18T13:51:28.000Z",
    "acc_state": 1,
    "altitude": 57,
    "analogue_1": 0,
    "analogue_2": 0,
    "analogue_3": 0,
    "analogue_4": 0,
    "angle": 258,
    "battery": 74,
    "battery_current": 0,
    "battery_voltage": 3859,
    "button_id": 0,
    "cell_id": 0,
    "cid": "",
    "dallas_temperature_1": 0,
    "dallas_temperature_2": 0,
    "dallas_temperature_3": 0,
    "device_type": "FMBXXX",
    "digital_1": false,
    "digital_2": false,
    "digital_3": false,
    "digital_4": false,
    "digital_output_1": 0,
    "digital_output_2": 1,
    "eco_score": 1000,
    "external_power_voltage": 0,
    "green_driving_type": 0,
    "green_driving_value": 0,
    "gsensor_state": 0,
    "hdop": 6,
    "ibutton_id": "",
    "id": "1ba11080-6748-11ed-b708-1566bdff1367",
    "lac": "",
    "lat": "51.5390166",
    "location_type": "GPS",
    "long": "-3.5989166",
    "movement": 0,
    "movement_sensor": 1,
    "pdop": 10,
    "relay_state": 0,
    "roaming": 0,
    "satellites": 21,
    "signal": 3,
    "speed": 48,
    "vdop": 0
  },
  {
    "imei": "1234567",
    "data_bucket": "19314",
    "timestamp": "2022-11-18T13:51:31.000Z",
    "acc_state": 1,
    "altitude": 56,
    "analogue_1": 0,
    "analogue_2": 0,
    "analogue_3": 0,
    "analogue_4": 0,
    "angle": 258,
    "battery": 72,
    "battery_current": 0,
    "battery_voltage": 3851,
    "button_id": 0,
    "cell_id": 0,
    "cid": "",
    "dallas_temperature_1": 0,
    "dallas_temperature_2": 0,
    "dallas_temperature_3": 0,
    "device_type": "FMBXXX",
    "digital_1": false,
    "digital_2": false,
    "digital_3": false,
    "digital_4": false,
    "digital_output_1": 0,
    "digital_output_2": 1,
    "eco_score": 1000,
    "external_power_voltage": 0,
    "green_driving_type": 0,
    "green_driving_value": 0,
    "gsensor_state": 0,
    "hdop": 6,
    "ibutton_id": "",
    "id": "1dbbda30-6748-11ed-8164-c3bac4dd9d98",
    "lac": "",
    "lat": "51.5389416",
    "location_type": "GPS",
    "long": "-3.5995583",
    "movement": 0,
    "movement_sensor": 1,
    "pdop": 11,
    "relay_state": 0,
    "roaming": 0,
    "satellites": 19,
    "signal": 3,
    "speed": 60,
    "vdop": 0
  },
  {
    "imei": "1234567",
    "data_bucket": "19314",
    "timestamp": "2022-11-18T13:51:41.000Z",
    "acc_state": 1,
    "altitude": 56,
    "analogue_1": 0,
    "analogue_2": 0,
    "analogue_3": 0,
    "analogue_4": 0,
    "angle": 264,
    "battery": 74,
    "battery_current": 0,
    "battery_voltage": 3864,
    "button_id": 0,
    "cell_id": 0,
    "cid": "",
    "dallas_temperature_1": 0,
    "dallas_temperature_2": 0,
    "dallas_temperature_3": 0,
    "device_type": "FMBXXX",
    "digital_1": false,
    "digital_2": false,
    "digital_3": false,
    "digital_4": false,
    "digital_output_1": 0,
    "digital_output_2": 1,
    "eco_score": 1000,
    "external_power_voltage": 0,
    "green_driving_type": 0,
    "green_driving_value": 0,
    "gsensor_state": 0,
    "hdop": 7,
    "ibutton_id": "",
    "id": "239ad7d0-6748-11ed-9ef4-6df3685640ee",
    "lac": "",
    "lat": "51.53868",
    "location_type": "GPS",
    "long": "-3.6022",
    "movement": 0,
    "movement_sensor": 1,
    "pdop": 12,
    "relay_state": 0,
    "roaming": 0,
    "satellites": 20,
    "signal": 3,
    "speed": 69,
    "vdop": 0
  }
];

let max = Math.max(...json.map((items)=> items.speed))
console.log(max);
Nijat Mursali
  • 930
  • 1
  • 8
  • 20
0

There are lots of ways. A simple for loop for example:

const data = // Your JSON array here
let max = data[0].speed;
for (let i = 1; i < data.length; i++) {
    if (data[i].speed > max) max = data[i].speed;
}

The other answers use map().

You could sort the data and take the speed of the first one. Useful if you need it sorted for other reasons.

let data = // Your JSON array here
data.sort((a,b) => b.speed - a.speed);
const max = data[0];

Also, reduce() can be used.

const data = // Your JSON array here
const max = data.reduce((prev, cur) => Math.max(prev, cur.speed), data[0].speed);

And there are surely other methods....

001
  • 13,291
  • 5
  • 35
  • 66
-1

You can use Array.map() to get each the speed value for each data point.

We can then use Math.max() along with the spread syntax to get the maximum speed and we can do the same to get the minimum speed.

const data = [ { "imei": "1234567", "data_bucket": "19314", "timestamp": "2022-11-18T13:51:28.000Z", "acc_state": 1, "altitude": 57, "analogue_1": 0, "analogue_2": 0, "analogue_3": 0, "analogue_4": 0, "angle": 258, "battery": 74, "battery_current": 0, "battery_voltage": 3859, "button_id": 0, "cell_id": 0, "cid": "", "dallas_temperature_1": 0, "dallas_temperature_2": 0, "dallas_temperature_3": 0, "device_type": "FMBXXX", "digital_1": false, "digital_2": false, "digital_3": false, "digital_4": false, "digital_output_1": 0, "digital_output_2": 1, "eco_score": 1000, "external_power_voltage": 0, "green_driving_type": 0, "green_driving_value": 0, "gsensor_state": 0, "hdop": 6, "ibutton_id": "", "id": "1ba11080-6748-11ed-b708-1566bdff1367", "lac": "", "lat": "51.5390166", "location_type": "GPS", "long": "-3.5989166", "movement": 0, "movement_sensor": 1, "pdop": 10, "relay_state": 0, "roaming": 0, "satellites": 21, "signal": 3, "speed": 48, "vdop": 0 }, { "imei": "1234567", "data_bucket": "19314", "timestamp": "2022-11-18T13:51:31.000Z", "acc_state": 1, "altitude": 56, "analogue_1": 0, "analogue_2": 0, "analogue_3": 0, "analogue_4": 0, "angle": 258, "battery": 72, "battery_current": 0, "battery_voltage": 3851, "button_id": 0, "cell_id": 0, "cid": "", "dallas_temperature_1": 0, "dallas_temperature_2": 0, "dallas_temperature_3": 0, "device_type": "FMBXXX", "digital_1": false, "digital_2": false, "digital_3": false, "digital_4": false, "digital_output_1": 0, "digital_output_2": 1, "eco_score": 1000, "external_power_voltage": 0, "green_driving_type": 0, "green_driving_value": 0, "gsensor_state": 0, "hdop": 6, "ibutton_id": "", "id": "1dbbda30-6748-11ed-8164-c3bac4dd9d98", "lac": "", "lat": "51.5389416", "location_type": "GPS", "long": "-3.5995583", "movement": 0, "movement_sensor": 1, "pdop": 11, "relay_state": 0, "roaming": 0, "satellites": 19, "signal": 3, "speed": 60, "vdop": 0 }, { "imei": "1234567", "data_bucket": "19314", "timestamp": "2022-11-18T13:51:41.000Z", "acc_state": 1, "altitude": 56, "analogue_1": 0, "analogue_2": 0, "analogue_3": 0, "analogue_4": 0, "angle": 264, "battery": 74, "battery_current": 0, "battery_voltage": 3864, "button_id": 0, "cell_id": 0, "cid": "", "dallas_temperature_1": 0, "dallas_temperature_2": 0, "dallas_temperature_3": 0, "device_type": "FMBXXX", "digital_1": false, "digital_2": false, "digital_3": false, "digital_4": false, "digital_output_1": 0, "digital_output_2": 1, "eco_score": 1000, "external_power_voltage": 0, "green_driving_type": 0, "green_driving_value": 0, "gsensor_state": 0, "hdop": 7, "ibutton_id": "", "id": "239ad7d0-6748-11ed-9ef4-6df3685640ee", "lac": "", "lat": "51.53868", "location_type": "GPS", "long": "-3.6022", "movement": 0, "movement_sensor": 1, "pdop": 12, "relay_state": 0, "roaming": 0, "satellites": 20, "signal": 3, "speed": 69, "vdop": 0 } ];

const speeds = data.map(item => item.speed);
const maxSpeed = Math.max(...speeds);
const minSpeed = Math.min(...speeds);

console.log('Number of data points:', speeds.length);
console.log('Max speed:', maxSpeed);
console.log('Min speed:', minSpeed);
.as-console-wrapper { max-height: 100% !important; }

We can also use Array.reduce() to get the answer:

const data = [ { "imei": "1234567", "data_bucket": "19314", "timestamp": "2022-11-18T13:51:28.000Z", "acc_state": 1, "altitude": 57, "analogue_1": 0, "analogue_2": 0, "analogue_3": 0, "analogue_4": 0, "angle": 258, "battery": 74, "battery_current": 0, "battery_voltage": 3859, "button_id": 0, "cell_id": 0, "cid": "", "dallas_temperature_1": 0, "dallas_temperature_2": 0, "dallas_temperature_3": 0, "device_type": "FMBXXX", "digital_1": false, "digital_2": false, "digital_3": false, "digital_4": false, "digital_output_1": 0, "digital_output_2": 1, "eco_score": 1000, "external_power_voltage": 0, "green_driving_type": 0, "green_driving_value": 0, "gsensor_state": 0, "hdop": 6, "ibutton_id": "", "id": "1ba11080-6748-11ed-b708-1566bdff1367", "lac": "", "lat": "51.5390166", "location_type": "GPS", "long": "-3.5989166", "movement": 0, "movement_sensor": 1, "pdop": 10, "relay_state": 0, "roaming": 0, "satellites": 21, "signal": 3, "speed": 48, "vdop": 0 }, { "imei": "1234567", "data_bucket": "19314", "timestamp": "2022-11-18T13:51:31.000Z", "acc_state": 1, "altitude": 56, "analogue_1": 0, "analogue_2": 0, "analogue_3": 0, "analogue_4": 0, "angle": 258, "battery": 72, "battery_current": 0, "battery_voltage": 3851, "button_id": 0, "cell_id": 0, "cid": "", "dallas_temperature_1": 0, "dallas_temperature_2": 0, "dallas_temperature_3": 0, "device_type": "FMBXXX", "digital_1": false, "digital_2": false, "digital_3": false, "digital_4": false, "digital_output_1": 0, "digital_output_2": 1, "eco_score": 1000, "external_power_voltage": 0, "green_driving_type": 0, "green_driving_value": 0, "gsensor_state": 0, "hdop": 6, "ibutton_id": "", "id": "1dbbda30-6748-11ed-8164-c3bac4dd9d98", "lac": "", "lat": "51.5389416", "location_type": "GPS", "long": "-3.5995583", "movement": 0, "movement_sensor": 1, "pdop": 11, "relay_state": 0, "roaming": 0, "satellites": 19, "signal": 3, "speed": 60, "vdop": 0 }, { "imei": "1234567", "data_bucket": "19314", "timestamp": "2022-11-18T13:51:41.000Z", "acc_state": 1, "altitude": 56, "analogue_1": 0, "analogue_2": 0, "analogue_3": 0, "analogue_4": 0, "angle": 264, "battery": 74, "battery_current": 0, "battery_voltage": 3864, "button_id": 0, "cell_id": 0, "cid": "", "dallas_temperature_1": 0, "dallas_temperature_2": 0, "dallas_temperature_3": 0, "device_type": "FMBXXX", "digital_1": false, "digital_2": false, "digital_3": false, "digital_4": false, "digital_output_1": 0, "digital_output_2": 1, "eco_score": 1000, "external_power_voltage": 0, "green_driving_type": 0, "green_driving_value": 0, "gsensor_state": 0, "hdop": 7, "ibutton_id": "", "id": "239ad7d0-6748-11ed-9ef4-6df3685640ee", "lac": "", "lat": "51.53868", "location_type": "GPS", "long": "-3.6022", "movement": 0, "movement_sensor": 1, "pdop": 12, "relay_state": 0, "roaming": 0, "satellites": 20, "signal": 3, "speed": 69, "vdop": 0 } ];

const maxSpeed = data.reduce((max, dataPt ) => {
    return (dataPt.speed > max) ? dataPt.speed: max;
}, data[0].speed);

console.log('Max speed:', maxSpeed)
Terry Lennox
  • 29,471
  • 5
  • 28
  • 40