मान लीजिए, हमारे पास इस तरह की सरणियों का एक ऑब्जेक्ट है -
const obj = { obj1: [ 0, 10 ], obj2: [ 3, 9 ], obj3: [ 5, 12, 14 ] };
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो सरणी के ऐसे एक ऑब्जेक्ट को लेता है। ध्यान दें कि प्रत्येक वस्तु में एक से अधिक दूरी बिंदु होते हैं, लेकिन अन्य ऑब्जेक्ट के दूरी बिंदु के साथ संयोजन के लिए केवल एक को चुना जाना चाहिए।
हम ऊपर दिए गए दूरी बिंदुओं के आधार पर तीन वस्तुओं को 12 तरीकों से जोड़ सकते हैं।
उदाहरण के लिए, यह बन सकता है -
[0,3,5];
इस मामले में, तीन वस्तुओं के बीच की कुल दूरी 5 - 0 होगी जो कि 5 है;
या यह [10, 9, 5] बन सकता है, और दूरी है -
10 − 5 = 5;
संयोजन [0, 3, 12] भी हो सकता है और दूरी है -
12 − 0 = 12;
हम जो हासिल करने का इरादा रखते हैं, वह सबसे छोटा संयोजन खोजना है, जो इस मामले में होना चाहिए [10,9, 12]; और दूरी 12−9 =3 है;
ध्यान दें कि सबसे छोटी दूरी से हमारा तात्पर्य समूह के सबसे बड़े और सबसे छोटे तत्व के बीच के अंतर से है।
उदाहरण
इसके लिए कोड होगा -
const obj = { obj1: [ 0, 10 ], obj2: [ 3, 9 ], obj3: [ 5, 12, 14 ] }; const findNearest = (obj = {}) => { let parts = [undefined, undefined, undefined]; let i; let res; const data = Object .values(obj) .map((a, i) => a.map(v => [v, i])) .reduce((a, b) => a.concat(b)) .sort((a, b) => a[0] − b[0] || a[1] − b[1]); for (i = 0; i < data.length; i++) { parts[data[i][1]] = data[i][0]; if (parts.some(v => v === undefined)) continue; if (!res || Math.max(...parts) − Math.min(...parts) < Math.max(...res) − Math.min(...res)) { res = parts.slice(); }; }; return res; }; console.log(findNearest(obj));
आउटपुट
और कंसोल में आउटपुट होगा -
[ 10, 9, 12 ]