猿问

根据另一个数组的顺序对数组进行排序 - 对输入

所以我有两个数组 - arrOne = [10, 2, 3, 14, 1] 和 arrTwo = [1, 2, 3, 5, 4];

我想对 arrTwo 进行排序并在 arrOne 上使用相同的索引更改,即 arrTwo = [1, 2, 3, 4, 5], arrOne [10, 2, 3, 1, 14]。

我一直在尝试用归并排序来实现它,但它不起作用。递归阻碍了我做我想做的事。

需要注意的是,我一次将数据作为两个整数获取,并将它们推送到单独的数组中,使用前面的数组意味着 -

  1. 输入 10 ,1

  2. 输入 2, 2

  3. 输入 3, 3

  4. 输入 14, 5

  5. 输入 1, 4

也许可以使用不同的数据结构,但我不知道。

我把 go 作为一个标签,因为我想用两种语言来解决它。


繁星淼淼
浏览 96回答 2
2回答

慕尼黑的夜晚无繁华

创建一个二维数组,其中包含 2 个数组的值并在排序后提取 2 个数组。let arrOne = [10, 2, 3, 14, 1],  arrTwo = [1, 2, 3, 5, 4];arrOne  // create 2d array which contains both array values  .map((v, i) => [v, arrTwo[i]])  // sort the combined array based on first array element  .sort(([a], [b]) => a - b)  // update the main arrays  .forEach(([v1, v2], i) => {    arrOne[i] = v1;    arrTwo[i] = v2;  })console.log(arrOne, arrTwo)

开满天机

为了解决这个问题,我不会使用两个数组。我会将一个对象推送到一个数组中。使其更加结构化,保持数据“在一起”const data = [{ one: 10, two: 1},{ one: 2, two: 2},{ one: 3,  two: 3},{ one: 14, two: 5},{ one: 1, two: 4}添加另一个输入:data.push({   one: 200,   two: 6})然后按“二”键排序data.sort((a, b) => {    return a.two-b.two})请注意,排序会改变数组,但如果这是一个问题,您可以复制。无论如何,猜测对原始数组进行排序对您的用例来说不是问题。
随时随地看视频慕课网APP

相关分类

Go
我要回答