给定数组
[
[Spain , Madrid , 10-12-2024]
[Spain , Barcelona , 10-15-2024]
[Suisse , Berne , 10-18-2024]
[France , Paris , 10-22-2024]
[France , Lyon , 10-24-2024]
]
如何轻松获取按国家/地区排序的新数组
[
[Spain ,
[ Madrid , 10-12-2024],
[ Barcelona , 10-15-2024]
],
[Suisse ,
[ Berne , 10-18-2024]
],
[France ,
[ Paris , 10-22-2024],
[ Lyon , 10-24-2024]
]
]
当用户单击 1. 国家/地区、2. 城市、3. 定义日期时,他可能会以不同的方式执行此操作,因此初始数组可能如下所示
[
[Spain , Madrid , 10-12-2024]
[Suisse , Berne , 10-18-2024]
[France , Paris , 10-22-2024]
[France , Lyon , 10-24-2024]
[Spain , Barcelona , 10-15-2024] // ooops, I've forgotten this date...
]
考虑使用
map
、reduce
和 Nullish 合并运算符 ??=
:
const data = [
['Spain', 'Madrid', '10-12-2024'],
['Spain', 'Barcelona', '10-15-2024'],
['Suisse', 'Berne', '10-18-2024'],
['France', 'Paris', '10-22-2024'],
['France', 'Lyon', '10-24-2024']
];
const result = Object.values(
data.reduce((acc, [country, city, date]) => {
acc[country] ??= [country, []];
acc[country][1].push([city, date]);
return acc;
}, {})
);
console.log(result);