为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
繁星淼淼 2022-05-18 16:02:09
所以我有两个数组 - 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]。我一直在尝试用归并排序来实现它,但它不起作用。递归阻碍了我做我想做的事。需要注意的是,我一次将数据作为两个整数获取,并将它们推送到单独的数组中,使用前面的数组意味着 -输入 10 ,1输入 2, 2输入 3, 3输入 14, 5输入 1, 4也许可以使用不同的数据结构,但我不知道。我把 go 作为一个标签,因为我想用两种语言来解决它。
查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

创建一个二维数组,其中包含 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)


查看完整回答
反对 回复 2022-05-18
?
开满天机

TA贡献1786条经验 获得超13个赞

为了解决这个问题,我不会使用两个数组。


我会将一个对象推送到一个数组中。使其更加结构化,保持数据“在一起”



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

})

请注意,排序会改变数组,但如果这是一个问题,您可以复制。无论如何,猜测对原始数组进行排序对您的用例来说不是问题。


查看完整回答
反对 回复 2022-05-18
  • 2 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信