Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Xếp hạng mảng (Array Ranking) trong JavaScript

Cho 3 mảng số cùng độ dài. Viết hàm ánh xạ các phần tử tương ứng theo thứ hạng (giảm dần) tại mỗi vị trí.

Ví dụ với 3 mảng đầu vào, kết quả là 3 mảng xếp hạng tương ứng.

Mã thực hiện

const array1 = [10,23,53,74,33,56,6,0,43,45,11];
const array2 = [52,46,27,28,4,11,53,6,75,75,22];
const array3 = [26,18,10,12,31,12,5,8,44,34,65];
const transpose = (rank, arr) => arr.map((el, ind) => [...(rank[ind] || []), el]);
const ranks = arr => arr.map(
  Map.prototype.get,
  [...arr].sort((a,b) => b-a).reduce((r => (m,v) => m.set(v, (r++, m.get(v)) || r))(0), new Map)
);
const findRanks = (...arrs) => arrs.reduce(transpose, []).map(ranks).reduce(transpose, []);
console.log(findRanks(array1, array2, array3));

Kết quả

[
  [3,2,1,1,1,1,2,3,3,2,3],
  [1,1,2,2,3,3,1,2,1,1,2],
  [2,3,3,3,2,2,3,1,2,3,1]
]