लॉजिकल AND (&&) ऑपरेटर और स्प्रेड सिंटैक्स (...) का उपयोग करके शर्त के आधार पर ऑब्जेक्ट प्रॉपर्टी सशर्त रूप से जोड़ें/बदलें।
बुनियादी पैटर्न
const condition = true;
const baseObj = { a: 1, b: 2 };
// condition true होने पर ही c: 3 जोड़ें
const result = {
...baseObj,
...(condition && { c: 3 })
};
console.log(result); // { a: 1, b: 2, c: 3 }
const condition2 = false;
const result2 = {
...baseObj,
...(condition2 && { c: 3 })
};
console.log(result2); // { a: 1, b: 2 } - c नहीं जुड़ा
व्यावहारिक उदाहरण: बैकलॉग फ्लैग
let marksDetails = { Mark1: 33, Mark2: 89 };
let isBacklog = false;
// बैकलॉग false - Mark1 अपरिवर्तित
let result1 = {
...marksDetails,
...(isBacklog === true && { Mark1: 93 })
};
console.log("बैकलॉग false:", result1); // { Mark1: 33, Mark2: 89 }
isBacklog = true;
// बैकलॉग true - Mark1 बदलकर 93
let result2 = {
...marksDetails,
...(isBacklog === true && { Mark1: 93 })
};
console.log("बैकलॉग true:", result2); // { Mark1: 93, Mark2: 89 }
फंक्शन के रूप में
function updateMarksIfBacklog(marks, isBacklog, newMark) {
return {
...marks,
...(isBacklog && { Mark1: newMark })
};
}
console.log(updateMarksIfBacklog({ Mark1: 50, Mark2: 60 }, false, 90));
// { Mark1: 50, Mark2: 60 }
console.log(updateMarksIfBacklog({ Mark1: 50, Mark2: 60 }, true, 90));
// { Mark1: 90, Mark2: 60 }
एकाधिक शर्तें
const user = { name: "John", age: 25 };
const isAdmin = true;
const isPremium = false;
const hasPermission = true;
const enrichedUser = {
...user,
...(isAdmin && { role: "admin", permissions: ["all"] }),
...(isPremium && { tier: "premium", discount: 0.2 }),
...(hasPermission && { accessLevel: "full" })
};
console.log(enrichedUser);
// { name: 'John', age: 25, role: 'admin', permissions: [ 'all' ], accessLevel: 'full' }
चलाने का तरीका
node conditional-property.js
आउटपुट
बैकलॉग false: { Mark1: 33, Mark2: 89 }
बैकलॉग true: { Mark1: 93, Mark2: 89 }
कैसे काम करता है
condition && value- यदि condition truthy तो value लौटाता है, अन्यथा condition (falsy) लौटाता है{ ...(false) }- फाल्सी मान स्प्रेड होने पर कोई प्रॉपर्टी नहीं जोड़ता{ ...(true && { x: 1 }) }→{ ...{ x: 1 } }→{ x: 1 }
नोट
यह पैटर्न सशर्त प्रॉपर्टी जोड़ने के लिए है। मौजूदा प्रॉपर्टी बदलने के लिए सीधे असाइनमेंट या Object.assign उपयोग करें।