[英]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.