मूल प्रश्न की आवश्यकताओं को स्पष्ट रूप से स्ट्रिंग प्रक्षेप से लाभ नहीं मिल सकता है, क्योंकि ऐसा लगता है कि यह मनमाना प्रतिस्थापन कुंजी का रनटाइम प्रसंस्करण है।
हालांकि , अगर आपको सिर्फ स्ट्रिंग इंटरपोलेशन करना था, तो आप उपयोग कर सकते हैं:
const str = `My name is ${replacements.name} and my age is ${replacements.age}.`
नोट स्ट्रिंग को सीमांकित करने वाले बैकटिक्स की आवश्यकता होती है।
विशेष ओपी की आवश्यकता पर मुकदमा चलाने के जवाब के लिए, आप String.prototype.replace()
प्रतिस्थापन के लिए उपयोग कर सकते हैं ।
निम्नलिखित कोड सभी मैचों को संभाल लेगा और बदले बिना लोगों को नहीं छूएगा (इसलिए जब तक आपके प्रतिस्थापन मूल्य सभी तार हैं, यदि नहीं, तो नीचे देखें)।
var replacements = {"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"},
str = 'My Name is %NAME% and my age is %AGE%.';
str = str.replace(/%\w+%/g, function(all) {
return replacements[all] || all;
});
jsFiddle ।
यदि आपके कुछ प्रतिस्थापन तार नहीं हैं, तो सुनिश्चित करें कि वे पहले ऑब्जेक्ट में मौजूद हैं। यदि आपके पास उदाहरण जैसे प्रारूप हैं, तो प्रतिशत संकेतों में लिपटे हुए हैं, तो आप इसे in
प्राप्त करने के लिए ऑपरेटर का उपयोग कर सकते हैं ।
jsFiddle ।
हालाँकि, यदि आपके प्रारूप में कोई विशेष प्रारूप नहीं है, अर्थात कोई स्ट्रिंग, और आपके प्रतिस्थापन ऑब्जेक्ट में कोई null
प्रोटोटाइप, उपयोग नहीं हैObject.prototype.hasOwnProperty()
, जब तक कि आप गारंटी नहीं दे सकते कि आपके संभावित प्रतिस्थापित प्रतिस्थापन में से कोई भी प्रोटोटाइप पर संपत्ति के नामों के साथ टकराएगा।
jsFiddle ।
अन्यथा, यदि आपका प्रतिस्थापन स्ट्रिंग था 'hasOwnProperty'
, तो आपको परिणामी गड़बड़ स्ट्रिंग मिलेगी।
jsFiddle ।
एक तरफ ध्यान दें के रूप में, आप बुलाया जाना चाहिए replacements
एक Object
, एक नहीं Array
।