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.

3
  • 1
    data.reduce((prev, cur) => Math.max(prev, cur.speed), data[0].speed); Commented Nov 18, 2022 at 15:26
  • I am assuming you want an answer in JavaScript. You should edit your post and tag a language. Commented Nov 18, 2022 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 Commented Nov 18, 2022 at 15:38

3 Answers 3

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

Sign up to request clarification or add additional context in comments.

1 Comment

@dataflowjoe did this answer solve your problem?
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....

Comments

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

2 Comments

What is the difference between this and my answer?
Just coincidence, you'll see the same with this and other questions.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.