Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การจัดอันดับอาร์เรย์ JavaScript - JavaScript


สมมติว่าเรามีอาร์เรย์ JavaScript ของ Number สามชุดดังนี้ −

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 =(อันดับ arr) => { ส่งคืน 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), แผนที่ใหม่) );};const findRanks =(...arrs) => { return arr .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 ]]