다음과 같은 Number의 세 가지 JavaScript 배열이 있다고 가정합니다. -
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];
모든 배열의 길이는 항상 동일합니다.
이러한 배열의 개수에 관계없이 순위(즉, 감소하는 의미의 순서)에 따라 기존 배열의 해당 요소를 매핑하는 JavaScript 함수를 작성해야 합니다.
따라서 위 배열의 경우 출력은 다음과 같아야 합니다. -
const array1= [3,2,1,1,1,1,2,3,2,2,3]; const array2= [1,1,2,2,2,2,1,2,1,1,2]; const array3= [2,3,3,3,3,3,3,1,2,3,1];
예시
다음은 코드입니다 -
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) => {
return arr.map((el, ind) => {
return [...(rank[ind] || []), el];
});
};
const ranks = arr => {
return 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) => {
return arrs
.reduce(transpose, [])
.map(ranks)
.reduce(transpose, []);
};
console.log(findRanks(array1, array2, array3)); 출력
이것은 콘솔에 다음과 같은 출력을 생성합니다 -
[ [ 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 ] ]