Если честно, с данными в этом формате работать очень плохо. Мое предложение было бы, если есть какой-либо способ изменить структуру, это было бы очень предпочтительно. Однако, если это не так, вы можете манипулировать данными в работоспособном формате, сортировать их, а затем возвращать их в исходный формат, например:
let data = {
id: {0: 3, 1: 2, 2: 1},
amount: {0: 1000, 1: 5000, 2: 300},
date: {0: "aaa", 1: "bbb", 2: "ccc"}
}
// group data by index i.e. id[0], amount[0], and date[0] should be grouped together
let grouped = Object.entries(data.id).reduce((res, curr) => {
let [key, value] = curr;
res.push([data.id[key], data.amount[key], data.date[key]]);
return res;
}, []);
// sort by index 1 (amount) descending
let sorted = grouped.sort((a,b) => {
return b[1] - a[1];
});
// take sorted data and put back into original structure
let final = sorted.reduce((res, curr, index) => {
let [id, amount, date] = curr;
res.id[index] = id;
res.amount[index] = amount;
res.date[index] = date;
return res;
}, {id: {}, amount: {}, date: {}});
console.log(final);