简体   繁体   English

使用javascript基于另一个数组对一个数组进行排序

[英]Sort one array based on another array using javascript

I have two arrays 我有两个数组

  1. MRP [60 80 82 50 80 80 ] MRP [60 80 82 50 80 80 ]
  2. Brand [ ABCDEF ] 品牌[ ABCDEF ]

I need to get top two brands based on MRP. 我需要根据MRP获得两大品牌。 highest two in MRP is 82 ,80 but 80 is 3 times repeated so i need all repeated values as well to get top two brands. MRP中最高的两个是82,80但80是重复的3次所以我需要所有重复的值以获得前两个品牌。 ie i need to display [CBEF] 即我需要显示[CBEF]

For that i sorted MRP in descending order.Now MRP after sorting become [ 82 80 80 60 50 ] 为此我按降序排序MRP。现在排序后的MRP变为[ 82 80 80 60 50 ]

Now i need to sort Brand Array based on Sorted MRP.Can some one help in this sorting using javascript . 现在我需要根据Sorted MRP对Brand Array进行排序。可以使用javascript对这个排序中的一些帮助。

Try below code 试试下面的代码

var A = [60, 80, 82, 50, 80, 80];
var B = ['a', 'b', 'c', 'd', 'e', 'f'];

var all = [];

for (var i = 0; i < B.length; i++) {
    all.push({ 'A': A[i], 'B': B[i] });
}

all.sort(function(a, b) {
  return b.A - a.A;
});

A = [];
B = [];

for (var i = 0; i < all.length; i++) {
   A.push(all[i].A);
   B.push(all[i].B);
}    

alert(A);
alert( B);

Using lodash/underscore: 使用lodash /下划线:

var A = [60, 80, 82, 50, 80, 80];
var B = ['a', 'b', 'c', 'd', 'e', 'f'];

var result = _.unzip(_.sortBy(_.zip(A, B), '-0'));

var A_sorted = result[0]; // [82, 80, 80, 80, 60, 50]
var B_sorted = result[1]; // ["c", "b", "e", "f", "a", "d"]]

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

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