I have an array of of objects:
const sessions = [
{videoStartTime: "2022-08-23T12:05:28.000Z"},
{videoStartTime: "2022-08-23T11:39:51.000Z"},
{videoStartTime: "2022-08-23T10:51:03.000Z"},
{videoStartTime: "2022-08-22T15:49:44.000Z"},
{videoStartTime: "2022-08-22T15:34:42.000Z"},
{videoStartTime: "2022-08-22T15:25:58.000Z"},
{videoStartTime: "2022-08-17T11:11:05.000Z"}
]
And I need to write a function that get an item of the least time in array.
Output shoulde be like this: {videoStartTime: "2022-08-17T11:11:05.000Z"}
Thanks!
Advertisement
Answer
Sorting the whole list for the minimum is very slow; you can use .reduce() instead to linear search:
const sessions = [
{videoStartTime: "2022-08-23T12:05:28.000Z"},
{videoStartTime: "2022-08-23T11:39:51.000Z"},
{videoStartTime: "2022-08-23T10:51:03.000Z"},
{videoStartTime: "2022-08-22T15:49:44.000Z"},
{videoStartTime: "2022-08-22T15:34:42.000Z"},
{videoStartTime: "2022-08-22T15:25:58.000Z"},
{videoStartTime: "2022-08-17T11:11:05.000Z"}
];
const earliest = sessions.reduce((prev, curr) => {
if (prev == null)
return curr;
if (Date.parse(curr.videoStartTime) < Date.parse(prev.videoStartTime))
return curr;
else
return prev;
}, null);
console.log(earliest);