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

时间:2020-02-29 19:54:01

标签: javascript arrays sorting go

所以我有两个数组-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用作标记,因为我想同时用两种语言解决它。

2 个答案:

答案 0 :(得分:1)

创建一个包含2个数组的值的2d数组,并在排序后提取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)

答案 1 :(得分:0)

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

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

CONTAINER ID    IMAGE    COMMAND          CREATED      STATUS      PORTS                  NAMES
cccae1234ab1    myImage  "dotnet myImage" 3 hours ago  Up 3 hours  0.0.0.0:8080->443/tcp  weird_name

要添加其他输入:


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

请注意,排序将使数组发生变化,但是如果这是一个问题,则可以复制。无论如何,猜测对原始数组进行排序都不是问题。