मैं एक वस्तु का उपयोग हैश तालिका के रूप में कर रहा हूं। मैं इसके लिए अपनी सामग्री को तुरंत प्रिंट करना चाहता हूं (उदाहरण के लिए alert()
)। हैश को (कुंजी, मूल्य) जोड़े के सरणी में बदलने के लिए कुछ भी बनाया गया है?ऑब्जेक्ट पर फ़्लैट ऑब्जेक्ट?
उत्तर
मैं इस में कुछ और अपडेट किया गया। कंसोल.लॉग से भी पार्स करना बहुत आसान है क्योंकि यह __proto__
जैसे अतिरिक्त सामान को छोड़ देता है।
function flatten(obj) {
var empty = true;
if (obj instanceof Array) {
str = '[';
empty = true;
for (var i=0;i<obj.length;i++) {
empty = false;
str += flatten(obj[i])+', ';
}
return (empty?str:str.slice(0,-2))+']';
} else if (obj instanceof Object) {
str = '{';
empty = true;
for (i in obj) {
empty = false;
str += i+'->'+flatten(obj[i])+', ';
}
return (empty?str:str.slice(0,-2))+'}';
} else {
return obj; // not an obj, don't stringify me
}
}
एकमात्र चीज जो मैं इसे सुधारने के लिए करूंगा, वह रिकर्सन स्तर पर सही ढंग से इंडेंट है।
आप इसे 'console.log' पर क्यों चुनेंगे? आप अपने ब्राउज़र को आपके लिए प्रदान किए जाने वाले शानदार डिबगिंग विकल्पों का उपयोग क्यों कर रहे हैं? –
किसने कहा कि कोई भी 'console.log' को छोड़ रहा था? सवाल यह था कि डेटा कैसे फ़्लैट करना है। 'चेतावनी() 'का उल्लेख केवल" उदाहरण के लिए "किया गया था। क्या होगा यदि वह अजाक्स के माध्यम से इसे सर्वर पर वापस भेजना चाहता है? –
मुझे 'console.log' के बारे में पता है और यह मेरी अधिकांश डीबगिंग आवश्यकताओं के लिए निश्चित रूप से बहुत अच्छा है। हालांकि कभी-कभी मुझे कुछ पता होने पर पता लगाने के लिए अलर्ट का उपयोग करना उपयोगी लगता है। एक चेतावनी के बाद सीधे आने वाला कोड निष्पादित नहीं होता है जब तक कि आप अलर्ट ठीक नहीं करते। आम तौर पर जब यह व्यवहार वांछित नहीं होता है तो 'चेतावनी() 'का उपयोग करने के लिए कोई कारण नहीं है। –
का उपयोग पाश के लिए:
for (var x in yourObj)
{
alert(yourObj[x]);
}
इस तरह आप केवल मूल्य देखेंगे। लेकिन अगर आप चाबियों को भी ध्यान में रखते हैं, तो यह कई बार कई बार सतर्क होगा। आपको एक स्ट्रिंग बनाना चाहिए और अंतिम आउटपुट को अलर्ट करना चाहिए। – jAndy
अच्छी तरह से यह लूप के लिए एक उदाहरण है, ओप चाहता है कि एक पूर्ण कार्यान्वयन नहीं। वह बाकी को समझने में सक्षम होना चाहिए। – m0sa
ऐसा नहीं है कि मैं के बारे में पता कर रहा हूँ। फिर भी, आप इसे अपने आप को काफी संक्षेप में कर सकते हैं: alert
यह या तो
var obj = { a: 1, b: 2, c: 3 };
var arr = [];
for (var i in obj) {
var e = {};
e[i] = obj[i];
arr.push(e);
}
console.log(arr);
// Output: [Object { a=1 }, Object { b=2 }, Object { c=3 }]
बेशक
, आप नहीं कर सकते, तो आप ऐसा कर सकते रूप में अच्छी तरह सिर्फ console.log(obj)
पहली जगह में।
आप सकता है सरणियों के उत्पादन सरणियों:
var obj = { a: 1, b: 2, c: 3 };
var arr = [];
for (var i in obj) {
arr.push([i, obj[i]]);
}
console.log(arr);
// Output: [["a", 1], ["b", 2], ["c", 3]]
alert(arr);
// Alert: a, 1, b, 2, c, 3
लेकिन, फिर से, ew।
चूंकि आप alert
करना चाहते हैं, मुझे लगता है कि यह आपके उत्पादन संस्करण के लिए नहीं है, और पुरानी ब्राउज़र संगतता कोई समस्या नहीं है।
यदि यह मामला है, तो आप ऐसा कर सकते हैं:
var myHash = ......
alert(Object.keys(myHash).map(function(key) { return [key, myHash[key]]; }));
यह बहुत प्यारा है। –
ओह, हाँ यह है: 'वर myUsers = {};' 'myUsers [0] = { 'id': 'एक्स', 'उपयोगकर्ता नाम': 'एएए'} \ n' ' myUsers [1 ] = {'id': 'y', 'username': 'bbb'} ' 'ऑब्जेक्ट.कीज (myUsers) .map (फ़ंक्शन (कुंजी) {myUsers [key] .username;})' धन्यवाद ! – dirkk0
alert
में त्वरित & गंदा उपयोग के लिए
आप JSON
इस्तेमाल कर सकते हैं:
alert(JSON.stringify(yourObj).replace(/,/g,'\n'));
यहाँ यह की मेरी संस्करण है। यह आप नीचे की तरह इनपुट समतल के लिए अनुमति चाहिए:
var input = {
a: 'asdf',
b: [1,2,3],
c: [[1,2],[3,4]],
d: {subA: [1,2]}
}
समारोह इस तरह है:
function flatten (input, output) {
if (isArray(input)) {
for(var index = 0, length = input.length; index < length; index++){
flatten(input[index], output);
}
}
else if (isObject(input)) {
for(var item in input){
if(input.hasOwnProperty(item)){
flatten(input[item], output);
}
}
}
else {
return output.push(input);
}
};
function isArray(obj) {
return Array.isArray(obj) || obj.toString() === '[object Array]';
}
function isObject(obj) {
return obj === Object(obj);
}
प्रयोग की तरह कुछ है:
वर उत्पादन = []
समतल (इनपुट आउटपुट);
तब उत्पादन फ़्लैटेड सरणी होना चाहिए।
शायद थोड़ा देर हो चुकी है, लेकिन यहां आपके पास उत्तर का मेरा संस्करण है, जिसे ES2015 में अपडेट किया गया है। मैं एक पुनरावर्ती समारोह का उपयोग करें और यह काम करता है, भले ही मुख्य उद्देश्य के अंदर अन्य वस्तुओं हैं:
function objectFlattener (object) {
return Reflect.apply(Array.prototype.concat, [], Object.keys(object).map(key => {
if (object[key] instanceof Object) {
return objectFlattener(object[key]);
}
return `${ key }: ${ object[key] }`;
}));
}
तो पिछले वापसी आप अपने सरणी के अंदर तत्व फ़ॉर्मेट कर सकते हैं बदल रहा है।
- 1. एक नेस्टेड जेसन ऑब्जेक्ट को फ़्लैट करें
- 2. dtype ऑब्जेक्ट की एक numpy सरणी को कैसे फ़्लैट करें
- 3. असहज टाइपर: ऑब्जेक्ट [ऑब्जेक्ट ऑब्जेक्ट] पर कोई तरीका नहीं है '
- 4. jQuery ऑब्जेक्ट पर जावास्क्रिप्ट DOM ऑब्जेक्ट
- 5. किसी ऑब्जेक्ट पर लॉकिंग
- 6. ऑब्जेक्ट ऑब्जेक्ट के बजाय हैंडलबार.जेएस पार्स ऑब्जेक्ट
- 7. जावास्क्रिप्ट [ऑब्जेक्ट ऑब्जेक्ट]
- 8. (जावा) ऑब्जेक्ट इनपुटपुट ऑब्जेक्ट
- 9. ऑब्जेक्ट
- 10. शब्दकोश कन्वर्ट <स्ट्रिंग, ऑब्जेक्ट> बेनामी ऑब्जेक्ट में?
- 11. ऑब्जेक्ट
- 12. ऑब्जेक्ट
- 13. ऑब्जेक्ट
- 14. ऑब्जेक्ट
- 15. ऑब्जेक्ट
- 16. ऑब्जेक्ट
- 17. ऑब्जेक्ट
- 18. Azure टूल्स - ऑब्जेक्ट रेफरेंस ऑब्जेक्ट
- 19. सी # एक ऑब्जेक्ट से दूसरे ऑब्जेक्ट पर गणना
- 20. दृश्य में JSON ऑब्जेक्ट पर .NET ऑब्जेक्ट को
- 21. ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट के उदाहरण पर सेट नहीं है।
- 22. std :: vector push_back (ऑब्जेक्ट()) और push_back (नया ऑब्जेक्ट()) पर अंतर?
- 23. "ऑब्जेक्ट रेफरेंस ऑब्जेक्ट के उदाहरण पर सेट नहीं है" सूची
- 24. ऑब्जेक्ट
- 25. ऑब्जेक्ट
- 26. ऑब्जेक्ट
- 27. ऑब्जेक्ट
- 28. ऑब्जेक्ट
- 29. ऑब्जेक्ट
- 30. ऑब्जेक्ट
'console.log' या' console.dir' के साथ क्या गलत है? – jAndy
कंसोल के साथ क्या गलत है।लॉग इन करें()? चेतावनी क्यों? यह पर्याप्त डीबगिंग जानकारी कभी नहीं दिखाता है। यदि आप अपने चर को console.log करते हैं तो नए ब्राउज़र के कंसोल को पर्याप्त जानकारी प्रदर्शित करनी चाहिए। इसके अलावा, जेएस सरणी वस्तुएं हैं .. या यदि आप करेंगे, वस्तुएं सहयोगी सरणी हैं। –
@ एनबी .: जेएस 'ऐरे' ऑब्जेक्ट की हैं; और जेएस 'ऑब्जेक्ट का मॉडल "सहयोगी सरणी" की अवधारणा है, लेकिन "सहयोगी सरणी" और' ऐरे 'अलग-अलग विचार हैं। चलो उन्हें भ्रमित मत करो! ओपी की शब्दावली स्पॉट पर है। –