Javascript 按第一项对表格进行排序

问题描述 投票:0回答:1

给定数组

    [
      [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...
    ]
javascript arrays sorting
1个回答
0
投票

考虑使用

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);

© www.soinside.com 2019 - 2024. All rights reserved.