समस्या
हमें JavaScript में एक उपयोगकर्ता-परिभाषित डेटा प्रकार Streak बनाना है जिसे मान और ऑपरेशन के साथ वैकल्पिक रूप से किसी भी हद तक चेन किया जा सकता है।
मान निम्नलिखित स्ट्रिंग्स में से एक हो सकता है -
→ one, two, three, four, five, six, seven, eight, nine
ऑपरेशन निम्नलिखित स्ट्रिंग्स में से एक हो सकता है -
→ plus, minus
उदाहरण के लिए, यदि हम अपने क्लास के संदर्भ में निम्नलिखित को लागू करते हैं -
Streak.one.plus.five.minus.three;
तो आउटपुट होना चाहिए -
const output = 3;
आउटपुट व्याख्या
क्योंकि होने वाले ऑपरेशन हैं -
1 + 5 - 3 = 3
उदाहरण
निम्नलिखित कोड है -
const Streak = function() {
let value = 0;
const operators = {
'plus': (a, b) => a + b,
'minus': (a, b) => a - b
};
const numbers = [
'zero', 'one', 'two', 'three', 'four', 'five',
'six', 'seven', 'eight', 'nine'
];
Object.keys(operators).forEach((operator) => {
const operatorFunction = operators[operator];
const operatorObject = {};
numbers.forEach((num, index) => {
Object.defineProperty(operatorObject, num, {
get: () => value = operatorFunction(value, index)
});
});
Number.prototype[operator] = operatorObject;
});
numbers.forEach((num, index) => {
Object.defineProperty(this, num, {
get: () => {
value = index;
return Number(index);
}
});
});
};
const streak = new Streak();
console.log(streak.one.plus.five.minus.three);
आउटपुट
कंसोल आउटपुट निम्नलिखित है -
3