ধরুন, আমাদের নিচের নেস্টেড JSON অবজেক্টটি আছে:
const obj = {
id: 1,
title: 'hello world',
child: {
id: null,
title: 'foobar',
child: {
id: null,
title: 'i should be in results array '
}
},
foo: {
id: null,
title: 'i should be in results array too!'
},
deep: [
{
id: null,
value: 'yo'
},
{
id: null,
value: 'yo2'
}
]
};
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্ট হিসেবে এমন একটি অবজেক্ট, দ্বিতীয় আর্গুমেন্ট হিসেবে একটি কী স্ট্রিং এবং তৃতীয় আর্গুমেন্ট হিসেবে একটি ভ্যালু স্ট্রিং নেবে। ফাংশনটি JSON অবজেক্টে দেওয়া কী-ভ্যালু জোড়া চেক করবে।
যদি এমন কোনো অবজেক্ট থাকে, তবে ফাংশনটি সকল এমন অবজেক্টের একটি অ্যারে রিটার্ন করবে।
আমরা নিচের পদ্ধতি ব্যবহার করে সমস্যা সমাধান করব:
- যদি সার্চ করা আইটেম ফাল্স হয় বা অবজেক্ট না হয়, তবে রিটার্ন করব
- যদি দেওয়া কী এবং ভ্যালু মেলে, তবে আসল অবজেক্টটি রিজাল্ট সেটে যোগ করব,
- কীগুলো পেয়ে প্রপার্টিগুলোর ওভার ইটারেট করি এবং আবার ফাংশনটি কল করি।
শেষে, সংগৃহীত অবজেক্টগুলোর অ্যারেটি রিটার্ন করব।
উদাহরণ
const obj = {
id: 1,
title: 'hello world',
child: {
id: null,
title: 'foobar',
child: {
id: null,
title: 'i should be in results array '
}
},
foo: {
id: null,
title: 'i should be in results array too!'
},
deep: [
{
id: null,
value: 'yo'
},
{
id: null,
value: 'yo2'
}
]
};
const findObject = (obj = {}, key, value) => {
const result = [];
const recursiveSearch = (obj = {}) => {
if (!obj || typeof obj !== 'object') { return; };
if (obj[key] === value){
result.push(obj);
};
Object.keys(obj).forEach(function (k) {
recursiveSearch(obj[k]);
});
}
recursiveSearch(obj);
return result;
}
console.log(findObject(obj, 'id', null));
আউটপুট
[
{
id: null,
title: 'foobar',
child: {
id: null, title: 'i should be in results array '
}
},
{
id: null, title: 'i should be in results array '
},
{
id: null, title: 'i should be in results array too!'
},
{
id: null, value: 'yo'
},
{ id: null, value: 'yo2' }
]