मान लीजिए, हमारे पास इस तरह की संख्या की तीन जावास्क्रिप्ट सरणियाँ हैं -
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 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 ] ]