निम्नलिखित बाइनरी सरणी (ऐरे ए) पर विचार करें -
const arr = [1,0,1,1,1,1,0,1,1];
जब इस सरणी को फ़ंक्शन के माध्यम से पारित किया जाता है, तो sumRight() कहें, यह निम्न आउटपुट सरणी (ऐरे बी) उत्पन्न करता है -
const output = [1,0,4,3,2,1,0,2,1];
फ़ंक्शन को समझना
सरणी गिरफ्तारी में तत्व या तो 0 या 1 हो सकते हैं। फ़ंक्शन सरणी गिरफ्तारी के अंतिम तत्व से पीछे की ओर गिना जाता है, यदि सरणी गिरफ्तारी में लगातार 1 हैं तो आउटपुट सरणी में संबंधित तत्व 1 होगा लेकिन सरणी गिरफ्तारी में लगातार दूसरे 1 के लिए , यह 2 होगा। तीसरे एक इनपुट सरणी के लिए आउटपुट सरणी में तत्व 3 होगा, लेकिन सरणी गिरफ्तारी में 0 के लिए यह आउटपुट सरणी में भी 0 होगा।
तो चलिए इस फ़ंक्शन के लिए Array.prototype.reduceRight () विधि का उपयोग करके कोड लिखते हैं, जो सामान्य कम करने की विधि के समान काम करता है, यह बाएं के बजाय दाएं से शुरू होता है -
उदाहरण
const arr = [1,0,1,1,1,1,0,1,1]; const sumRight = arr => { return arr.reduceRight((acc, val) => { const { prev, res } = acc; if(val === 0){ return { prev: 0, res: res.concat(0) }; }; return { res: res.concat(val+prev), prev: prev+1 }; }, { prev: 0, res: [] }).res.reverse(); }; console.log(sumRight(arr));
आउटपुट
कंसोल में आउटपुट होगा -
[ 1, 0, 4, 3, 2, 1, 0, 2, 1 ]