我有两个数组:
let arrayValues = [["20", "."], ["42", "."], ["44", "."], ["6", "."], ["5", "."]]
let arrayIndex = [4,5,1,2,3]
我遇到一个问题:
我想根据索引Array-的编号对 values 数组进行排序(请注意,第一个元素已连接到第一个元素,第二个到第二个,依此类推)-这样,最大的数字就排在第一位,第二个是第二个,依此类推。该顺序需要转换为第一个数组。
结果应为:
let result = ["42", "."], ["20", "."], ["5", "."], ["6", "."], ["44", "."]]
由于新订单
= [5,4,3,2,1]
我现在的问题涉及一个非常特殊的问题-但是我不知道如何开始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)
答案 0 :(得分:1)
您可以获取索引,通过该索引上的值对它们进行排序,然后以新的顺序映射这些值。
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; }
答案 1 :(得分:0)
您可以只获取索引:
const result = [];
for(let i = 0; i < arrayValues.length && i < arrayIndex.length; i++)
result[ arrayIndex[i] - 1 ] = arrayValues[i];