繁体   English   中英

根据另一个排序数组

[英]Sort array based on another one

我得到两个数组:

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

我有一个问题:

我想根据索引Array的数字对values数组进行排序- (请注意,第一个Element连接到第一个Element,第二个连接到第二个,依此类推) -以便最大的数字排在最前面,第二个下一个等等。 此订单需要转换为第一个数组。

结果应该是这样的:

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)

您可以获取索引,通过该索引处的值对它们进行排序,然后以新的顺序映射这些值。

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

您可以只获取索引:

  const result = [];

  for(let i = 0; i < arrayValues.length && i < arrayIndex.length; i++)
    result[ arrayIndex[i] - 1 ] = arrayValues[i];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM