I'm hoping it doesn't return the JSON exactly the same as what you have above as it's not valid 😉
Assuming you have the following data, and that the date format is always going to be dd/MM/yyyy
{
"value": [
{
"deviceName": "Testmachine1",
"LastContacted": "01/10/2021"
},
{
"deviceName": "Testmachine2",
"LastContacted": "01/11/2021"
},
{
"deviceName": "Testmachine3",
"LastContacted": "01/12/2021"
}
]
}

To clean up the output so we are accessing the value array directly I'd use a Select. I'd also reformat the date so it's in the format yyyy-MM-dd so we can easily sort on it. After it's all sorted you can reformat the dates however you want.
For the From I've got the following expression to just get the array.
outputs('Compose_Data')?['value']
For deviceName I have:
item()?['deviceName']
For LastContacted I have the following which extracts out the day, month and year and reorders/splits into yyyy-MM-dd format.
concat(substring(item()?['LastContacted'], 6,4),'-',substring(item()?['LastContacted'], 3,2),'-',substring(item()?['LastContacted'], 0,2))

I then use the sort expression to sort on LastContacted, then wrap that into a reverse to have it sorted by LastContacted in descending order.
reverse(sort(body('Select_Data'), 'LastContacted'))

If you then wanted to reformat the dates back into dd/MM/yyyy then you could do the following.
For deviceName I have the same as before:
item()?['deviceName']
For LastContacted I have:
formatDateTime(item()?['LastContacted'], 'dd/MM/yyyy')

The final output would be:

NOTE: After posting my reply I read your initial question again and realized that you were actually just trying to get the latest object based on the date. Not all is lost as now that we have our sorted array of objects, we can just use another Compose to get the first item in the array which is what you are after 🙂
body('Select_Date_Format')[0]

Final output would be:
