Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> JavaScript

जावास्क्रिप्ट में वस्तुओं के बीच न्यूनतम दूरी


मान लीजिए, हमारे पास सरणियों का एक ऑब्जेक्ट है जैसे -

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 ]
  1. JavaScript में ऐरे ऑब्जेक्ट की लंबाई JavaScript में ऐरे ऑब्जेक्ट की लंबाई

    JavaScript में Length प्रॉपर्टी ऑब्जेक्ट का आकार लौटाती है। स्ट्रिंग और ऐरे ऑब्जेक्ट की लंबाई के लिए कोड निम्न है -उदाहरण<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, i

  1. क्या हम जावास्क्रिप्ट में ऐरे में ऑब्जेक्ट्स के बीच मेथड शेयर कर सकते हैं? क्या हम जावास्क्रिप्ट में ऐरे में ऑब्जेक्ट्स के बीच मेथड शेयर कर सकते हैं?

    ऐरे में ऑब्जेक्ट्स के बीच मेथड शेयर करने का कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Document</title> <style>    body

  1. जावास्क्रिप्ट में ऑब्जेक्ट्स की समानता समझाएं जावास्क्रिप्ट में ऑब्जेक्ट्स की समानता समझाएं

    जावास्क्रिप्ट में प्रिमिटिव्स जैसे स्ट्रिंग, नंबर, बूलियन आदि की तुलना उनके मानों द्वारा की जाती है जबकि ऑब्जेक्ट्स (नेटिव या कस्टम) की तुलना उनके रेफरेंस द्वारा की जाती है। रेफरेंस द्वारा तुलना का अर्थ है कि दो या अधिक ऑब्जेक्ट्स मेमोरी में एक ही स्थान को इंगित करते हैं या नहीं। जावास्क्रिप्ट में