基于不同数组的排序对数组进行排序

问题描述 投票:0回答:2

我有 2 个数组:

firstArr = ["Pizza", "Pasta", "Chicken Soup", "French Fries"]
secondArr = [8, 6, 6, 9]

现在我像这样对第二个数组进行排序:

secondArr = [9, 8, 6, 6]

然后我希望第一个数组遵循这个新顺序:

firstArr = ["French Fries", "Pizza", "Chicken Soup", "Pasta"]

我怎样才能做到这一点?

coldfusion cfml
2个回答
0
投票
int temp = 0;
String temp1 = "";
for(int i=0; i< secondArr.size(); i++) {
   for(int j=i+1; j<secondArr.size(); j++) {
      if(secondArr[i] < secondArr[j]) {
         temp = secondArr[i];
         secondArr[i] = secondArr[j];
         secondArr[j] = temp;
         // To swap the second array if first is swapped on the same index
         temp1 = firstArr[i];
         firstArr[i] = firstArr[j];
         firstArr[j] = temp1; 
      }
   }
}   

0
投票

大概是这样的:

items = ["Pizza", "Pasta", "Chicken Soup", "French Fries"]
weighting = [8, 6, 6, 9]

orderedItems = items
    .reduce(
        (weightedItems, v, i) => weightedItems.append({item=v, weight=weighting[i]}),
        []
    )
    .sort((e1, e2) => e2.weight == e1.weight ? compare(e1.item, e2.item) : sgn(e2.weight - e1.weight))
    .map((v)=>v.item)

writeDump(orderedItems)
  • 将两个数组合并成一个项目/权重对。
  • 排序(主要通过权重降序,然后是权重相等的 alpha)。
  • 只返回项目名称。
© www.soinside.com 2019 - 2024. All rights reserved.