दिलचस्प पोस्ट
IOError: अमान्य मोड ('आर') या फ़ाइल नाम: 'c: \\ Python27 \ test.txt' SQL सर्वर ऑपरेटिंग सिस्टम त्रुटि 5: "5 (प्रवेश निषेध है।)" मैं एक कस्टम ईक्लीप सिंटैक्स हाइलाइटर कैसे बना सकता हूं जावास्क्रिप्ट में तारीख को टाइमस्टैम्प में कनवर्ट करें? Iphone 5 रेटिना डिस्प्ले के लिए छवियाँ क्यों विम अजगर फाइलों में मेरे विस्तारक का पालन नहीं करता? रिक्त सूची के अंत में कैसे जोड़ना है? GlReadPixels () से OpenCV :: Mat का डेटा परिवर्तित करना सीएसएस छवियों को लोड करना कैसे डीजेगो टेम्प्लेट में स्टैंडअलोन बोकेह ग्राफ को एम्बेड करें तीन। जेएस प्रोजेक्टर और रे ऑब्जेक्ट्स एक ही चयन बयान पर गणना और समूह का उपयोग कैसे करें मैं यूएसबी एचआईडी डिवाइस से इनपुट कैसे पढ़ूं? एसकेफिशिक्स बॉडी और PostgreSQL में किसी तालिका की पंक्ति संख्या को खोजने के लिए तेज़ तरीका

जेएस में ऑब्जेक्ट करने के लिए स्ट्रिंग

मेरे पास स्ट्रिंग है जैसा कि

string = "firstName:name1, lastName:last1"; 

अब मुझे एक ऑब्जेक्ट obj की ज़रूरत है

 obj = {firstName:name1, lastName:last1} 

मैं जेएस में यह कैसे कर सकता हूं?

Solutions Collecting From Web of "जेएस में ऑब्जेक्ट करने के लिए स्ट्रिंग"

दरअसल, सबसे अच्छा समाधान JSON का उपयोग कर रहा है:

प्रलेखन

JSON.parse(text[, reviver]);

उदाहरण:

1)

 var myobj = JSON.parse('{ "hello":"world" }'); alert(myobj.hello); // 'world' 

2)

 var myobj = JSON.parse(JSON.stringify({ hello: "world" }); alert(myobj.hello); // 'world' 

3) JSON को एक फ़ंक्शन पास करना

 var obj = { hello: "World", sayHello: (function() { console.log("I say Hello!"); }).toString() }; var myobj = JSON.parse(JSON.stringify(obj)); myobj.sayHello = new Function("return ("+myobj.sayHello+")")(); myobj.sayHello(); 

आपकी स्ट्रिंग कर्ल ब्रेसिज़ के बिना एक JSON स्ट्रिंग की तरह दिखती है।

यह तब काम करना चाहिए:

 obj = eval('({' + str + '})'); 

अगर मैं सही ढंग से समझ रहा हूं:

 var properties = string.split(', '); var obj = {}; properties.forEach(function(property) { var tup = property.split(':'); obj[tup[0]] = tup[1]; }); 

मैं मान रहा हूँ कि संपत्ति का नाम बृहदान्त्र के बाईं तरफ है और स्ट्रिंग मान जिस पर लेता है वह सही है

ध्यान दें कि Array.forEach जावास्क्रिप्ट 1.6 है – आप अधिकतम अनुकूलता के लिए टूलकिट का उपयोग करना चाह सकते हैं।

यह आसान तरीका …

 var string = "{firstName:'name1', lastName:'last1'}"; eval('var obj='+string); alert(obj.firstName); 

उत्पादन

 name1 

अगर आप JQuery का उपयोग कर रहे हैं:

 var obj = jQuery.parseJSON('{"path":"/img/filename.jpg"}'); console.log(obj.path); // will print /img/filename.jpg 

याद रखें: ईवल बुराई है! : डी

मैंने कोड की कुछ पंक्तियों में एक समाधान लागू किया है जो काफी मज़बूती से काम करता है।

इस तरह एक HTML तत्व रखने के लिए जहां मैं कस्टम विकल्प पास करना चाहता हूं:

 <div class="my-element" data-options="background-color: #dadada; custom-key: custom-value;"> </div> 

एक फ़ंक्शन कस्टम विकल्पों को पार्स करता है और उस वस्तु का उपयोग करने के लिए एक वस्तु वापस करता है:

 function readCustomOptions($elem){ var i, len, option, options, optionsObject = {}; options = $elem.data('options'); options = (options || '').replace(/\s/g,'').split(';'); for (i = 0, len = options.length - 1; i < len; i++){ option = options[i].split(':'); optionsObject[option[0]] = option[1]; } return optionsObject; } console.log(readCustomOptions($('.my-element'))); 
 string = "firstName:name1, lastName:last1"; 

यह काम करेगा:

 var fields = string.split(', '), fieldObject = {}; if( typeof fields === 'object') ){ fields.each(function(field) { var c = property.split(':'); fieldObject[c[0]] = c[1]; }); } 

हालांकि यह कुशल नहीं है जब आपके पास ऐसा कुछ होता है तो क्या होता है:

 string = "firstName:name1, lastName:last1, profileUrl:http://localhost/site/profile/1"; 

split() 'http' को विभाजित करेगा इसलिए मैं सुझाव देता हूं कि आप पाइप की तरह एक विशेष सीमांकक का उपयोग करें

  string = "firstName|name1, lastName|last1"; var fields = string.split(', '), fieldObject = {}; if( typeof fields === 'object') ){ fields.each(function(field) { var c = property.split('|'); fieldObject[c[0]] = c[1]; }); } 

यह सार्वभौमिक कोड है, चाहे कितना भी आपका इनपुट लंबा हो, लेकिन एक ही स्कीमा में है: विभाजक 🙂

 var string = "firstName:name1, lastName:last1"; var pass = string.replace(',',':'); var arr = pass.split(':'); var empty = {}; arr.forEach(function(el,i){ var b = i + 1, c = b/2, e = c.toString(); if(e.indexOf('.') != -1 ) { empty[el] = arr[i+1]; } }); console.log(empty) 

यदि आपके पास एक स्ट्रिंग है जैसे foo: 1, bar: 2 आप इसे एक वैध obj में परिवर्तित कर सकते हैं:

 str .split(',') .map(x => x.split(':').map(y => y.trim())) .reduce((a, x) => { a[x[0]] = x[1]; return a; }, {}); 

इसके लिए # जावास्क्रिप्ट में निगलर के लिए धन्यवाद

 var stringExample = "firstName:name1, lastName:last1 | firstName:name2, lastName:last2"; var initial_arr_objects = stringExample.split("|"); var objects =[]; initial_arr_objects.map((e) => { var string = e; var fields = string.split(','),fieldObject = {}; if( typeof fields === 'object') { fields.forEach(function(field) { var c = field.split(':'); fieldObject[c[0]] = c[1]; //use parseInt if integer wanted }); } console.log(fieldObject) objects.push(fieldObject); }); 

"ऑब्जेक्ट्स" सरणी में सभी ऑब्जेक्ट्स होंगे

आपके मामले में

 var KeyVal = string.split(", "); var obj = {}; var i; for (i in KeyVal) { KeyVal[i] = KeyVal[i].split(":"); obj[eval(KeyVal[i][0])] = eval(KeyVal[i][1]); }