0

My date format is like this: Mon Mar 07 2022 and I want to show the latest data. I have tried this way but it's not working.

If I put new Date() into my code I got this error: var Date: DateConstructor new (value: string | number | Date) => Date (+3 overloads) The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.

 useEffect(() => {
        setIsLoading(true)
        fetch(`http://localhost:5000/dashboard/orders`)
            .then(res => res.json())
            .then(data => {
                const latestData = data.sort((a, b) => b.date - a.date)
// const latestData = data.sort((a, b) => new Date(b.date) -new Date( a.date)) // error
                setOrders(latestData)
            })
            .finally(() => setIsLoading(false))
    }, [])

2 Answers 2

1

This is a typescript error, the sort comparator function accepts only numbers.

Note: Without getTime it works in javascript.

const data = [{
    date: "Mon Mar 07 2022",
  },
  {
    date: "Mon Mar 01 2022",
  },
  {
    date: "Mon Mar 06 2022",
  },
];
const latestData = data.sort(
  (a, b) => new Date(b.date).getTime() - new Date(a.date).getTime()
);
console.log(latestData);

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

Comments

1

Please Try this way

data.sort(function(a,b){
  return new Date(b.date) - new Date(a.date);
});

Comments

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.