Сортировать массив на основе другого - PullRequest
0 голосов
/ 09 июля 2019

У меня есть два массива:

let arrayValues = [["20", "."], ["42", "."], ["44", "."], ["6", "."], ["5", "."]]
let arrayIndex = [4,5,1,2,3]

, и у меня есть одна проблема:

Я хочу отсортировать массив values ​​ на основе чиселindex Array - (обратите внимание, что первый элемент подключен к первому элементу, второй - ко второму и т. д.) - так, чтобы наибольшее число было первым, второе - следующими так одно.Этот порядок необходимо преобразовать в первый массив.

Результат должен быть таким:

let result = ["42", "."], ["20", "."], ["5", "."], ["6", "."], ["44", "."]]

из-за нового порядка

= [5,4,3,2,1]

Iтеперь мой вопрос имеет дело со сверхспециальной проблемой - но я не знал, как запустить tbh.

Любая помощь будет очень признательна.

Вот мой код Python:

arrayValues = (("20", "."), ("42", "."), ("44", "."), ("6", "."), ("5", "."))
arrayIndex = (4,5,1,2,3)
result = sorted(range(len(arrayValues)), key=lambda i:arrayIndex[i],reverse=0)

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Вы можете получить индексы, обрезать их по значениям в этом индексе и отобразить значения в новом порядке.

var values = [["20", "."], ["42", "."], ["44", "."], ["6", "."], ["5", "."]],
    order = [4, 5, 1, 2, 3],
    result = [...order.keys()]
        .sort((a, b) => order[b] - order[a])
        .map(i => values[i]);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 09 июля 2019

Вы можете просто взять индексы:

  const result = [];

  for(let i = 0; i < arrayValues.length && i < arrayIndex.length; i++)
    result[ arrayIndex[i] - 1 ] = arrayValues[i];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...