You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

排序后如何让两个多维数组(艺术家与歌曲)重新对齐

解决艺术家与歌曲排序后关联丢失的问题

嗨,这个坑我之前也踩过!把艺术家和歌曲拆成两个独立的多维数组,确实很容易在排序后搞丢它们的对应关系——毕竟你俩的关联全靠索引位置撑着,一旦艺术家数组的顺序被打乱,歌曲数组的索引没变,自然就对不上了。

核心思路:把关联数据绑定在一起

与其分开存两个数组,不如把每个艺术家和他对应的3首歌曲打包成一个对象(或结构体,看你用的语言),然后把这些对象放进一个数组里。这样排序的时候,整个对象会一起移动,艺术家和歌曲的关联就永远不会断啦!

举个JavaScript的例子:

原来的拆分写法(容易出问题)

// 拆分的两个数组
const artists = [
  { name: "周杰伦" },
  { name: "陈奕迅" },
  { name: "蔡健雅" },
  { name: "林俊杰" }
];
const songs = [
  ["晴天", "七里香", "青花瓷"],
  ["浮夸", "富士山下", "K歌之王"],
  ["红色高跟鞋", "别找我麻烦", "达尔文"],
  ["江南", "一千年以后", "小酒窝"]
];

// 排序艺术家数组后,关联断裂
artists.sort((a, b) => a.name.localeCompare(b.name));
// 这时候artists的顺序变了,但songs还是原来的顺序,对应不上了

改进后的绑定写法(关联永不丢)

// 把艺术家和歌曲绑定成一个对象数组
const artistWithSongs = [
  { artist: "周杰伦", songs: ["晴天", "七里香", "青花瓷"] },
  { artist: "陈奕迅", songs: ["浮夸", "富士山下", "K歌之王"] },
  { artist: "蔡健雅", songs: ["红色高跟鞋", "别找我麻烦", "达尔文"] },
  { artist: "林俊杰", songs: ["江南", "一千年以后", "小酒窝"] }
];

// 按艺术家名字排序,整个对象一起动,关联完全保留
artistWithSongs.sort((a, b) => a.artist.localeCompare(b.artist));

// 之后要单独提取艺术家或歌曲也很方便
const sortedArtists = artistWithSongs.map(item => item.artist);
const sortedSongs = artistWithSongs.map(item => item.songs);

关于Stack Overflow提交代码被拒的小提示

平台提示代码不符合要求,大概率是这几个原因:

  • 没有明确标注你用的编程语言(比如开头没说用Java/Python/JS)
  • 代码不是最小可复现版本——比如你贴了太多无关代码,或者缺少必要的初始化逻辑
  • 代码格式不对:没有用三个反引号(```)包裹代码块,或者缩进混乱

下次提交的时候,先说明你用的语言,然后只贴能复现问题的最少代码,再用代码块正确包裹,应该就能过啦!

内容的提问来源于stack exchange,提问作者Othello

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:11:08