हमारे पास इस तरह का नंबर लिटरल्स का एरे है -
const numbers = [10,6200,20,20,350,900,26,78,888,10000,78,15000,200,1280,2000,450];
हमें एक फ़ंक्शन लिखना है जो नंबरों का एक एरे और [0, 100] के बीच एक नंबर लेता है, मूल रूप से यह नंबर एक निश्चित प्रतिशत दर्शाता है। आइए इस नंबर को अभी के लिए x से दर्शाते हैं।
अब हमें मूल एरे के पहले n तत्वों का एक सबएरे लौटाना है जो मूल एरे के सभी तत्वों के कुल योग के x% के बराबर या उससे थोड़ा कम जोड़ते हैं।
एक सरल उदाहरण लें -
const numbers = [12, 10, 6, 8, 4, 2, 8];
इस एरे का कुल योग 50 है, और अब यदि हम दूसरा आर्गुमेंट 25 के रूप में प्रदान करते हैं (x के लिए मान), तो हमें पहले n तत्वों को लौटाना होगा जो 50 के 25% के बराबर या उससे थोड़ा कम जोड़ते हैं जो वास्तव में 12.5 है।
तो इस मामले में केवल पहले तत्व वाला एरे लौटाया जाना चाहिए क्योंकि दूसरे तत्व (10) को 12 में जोड़ने से हमारी थ्रेशोल्ड वैल्यू (12.5) पार हो जाएगी।
आइए इसके लिए कोड लिखते हैं। सबसे पहले, हम बस एरे को उसके योग में रिड्यूस करते हैं फिर एक फॉर लूप में हम एक एरे बनाते हैं जो ऊपर बताए गए मानदंड से मेल खाता है -
उदाहरण
const numbers = [10,6200,20,20,350,900,26,78,888,10000,78,15000,200,1280,2000,450]; const findPercent = (arr, percent) => { const sum = arr.reduce((acc, val) => acc+val); const part = []; let curr = 0; for(let i = 0; i < arr.length; i++){ curr += arr[i]; if(curr <= (sum*percent)/100){ part.push(arr[i]); } else { break; }; }; return part; }; console.log(findPercent(numbers, 35)); console.log(findPercent(numbers, 5)); console.log(findPercent(numbers, 65)); console.log(findPercent(numbers, 95));आउटपुट
कंसोल में आउटपुट होगा -
[ 10, 6200, 20, 20, 350, 900, 26, 78, 888 ] [ 10 ] [ 10, 6200, 20, 20, 350, 900, 26, 78, 888, 10000, 78 ] [ 10, 6200, 20, 20, 350, 900, 26, 78, 888, 10000, 78, 15000, 200, 1280 ]