मान लीजिए हमें एक फ़ंक्शन लिखना है, मान लीजिए isSame() जो एक नेस्टेड ऑब्जेक्ट स्वीकार करता है और इस तथ्य के आधार पर बूलियन लौटाता है कि क्या सभी कुंजियों के मान समान हैं। सभी कुंजियों से हमारा मतलब अंतिम कुंजियों से है जैसे यदि किसी कुंजी का मान नेस्टेड ऑब्जेक्ट है, तो हमें नेस्टेड ऑब्जेक्ट के अंत तक जाना होगा और उस मान की जाँच करनी होगी।
उदाहरण के लिए - यदि ऑब्जेक्ट है:
const obj = {
a: 1,
b: 1,
c: {
aa: 1
}
};
तो फ़ंक्शन को true लौटाना चाहिए क्योंकि सभी अंतिम कुंजियों का मान समान है (1)। आइए इस समस्या का एक पुनरावर्ती समाधान लिखते हैं।
उदाहरण
const obj = {
a: 1,
b: 1,
c: {
aa: 3
}
};
const allSame = (obj, value) => {
const keys = Object.keys(obj);
for (let i = 0; i < keys.length; i++) {
if (typeof obj[keys[i]] === "object" && !Array.isArray(obj[keys[i]])) {
return allSame(obj[keys[i]], value);
}
if (!value) {
value = obj[keys[i]];
continue;
}
if (obj[keys[i]] !== value) {
return false;
}
}
return true;
}
console.log(allSame(obj));
console.log(allSame({ a: 1, b: 1, c: { aa: 1 } }));
console.log(allSame({ a: { x: 1 }, b: 1, c: { aa: 1 } }));
console.log(allSame({ a: 1, b: 1, c: { aa: 2 } }));
आउटपुट
कंसोल में आउटपुट होगा:
false true true false