दिलचस्प पोस्ट
कैसे एमवीसी को IValidatableObject मान्य करने के लिए मजबूर किया जाए सी # अगर / फिर डिबग बनाम रिलीज के लिए निर्देश एसटीएल वेक्टर और धागा-सुरक्षा पायथन: प्रत्येक कुंजी के लिए एक पंक्ति के साथ एक सीएसवी फ़ाइल में एक शब्दकोश लिख रहा है: मान ' Android में पीडीएफ कैसे रेंडर करें जावा पुनरावर्ती फिबोनाची अनुक्रम दोनों स्थानीय और दूरस्थ जीआईटी भंडार के लिए मास्टर शाखा का नाम बदलें आश्चर्यजनक है कि वैश्विक वैरिएबल को जावास्क्रिप्ट में मान अनिर्धारित है गतिशील चर नाम जावा विभक्त पंक्तियों में विभाजित (विस्फोट) पांडा डेटाफ़्रेम स्ट्रिंग एंट्री ग्रिडलेआउट (GridView नहीं) सभी बच्चों को समान रूप से कैसे फैलाना jQuery के jqGrid एक संपादन पंक्ति पूर्ण होने पर संदेश दिखाएं Java.util.Collection के लिए शास्त्रीय सेट ऑपरेशन मेरी वेबसाइट पर एडब्लॉक को कैसे निकालना है? गोलंग में दिनांक स्ट्रिंग पार्सिंग

डी 3.जेएस में सरणी के लिए सीएसवी

मैं इसका उपयोग सीएसवी फ़ाइल को पार्स करने के लिए कर रहा हूं और डी 3 डॉक्स में विनिर्दिष्ट एक एआरए डेटा तैयार करता हूं:

d3.csv("afile.csv", function(data) { data.forEach(function(d) { d.date = formatDate.parse(d.date); d.price = +d.price; }); 

हालांकि, अगर इस पद्धति के बाद मैं data[0] को कॉल करने की कोशिश करता हूं तो यह कहता है कि यह अपरिभाषित है। क्या ऐसा इसलिए है क्योंकि data एक संदर्भ है और एक बार d3.csv() गुंजाइश से बाहर हो गया है? अगर यह मामला है तो मैं इस पर कैसे उबर सकता हूं। मुझे d3.csv() संदर्भ डेटा की आवश्यकता है

वेब के समाधान से एकत्रित समाधान "डी 3.जेएस में सरणी के लिए सीएसवी"

d3.csv एक अतुल्यकालिक विधि है इसका मतलब यह है कि डेटा लोड होने पर कॉलबैक फ़ंक्शन के अंदर कोड चलाया जाता है, लेकिन कॉलबैक फ़ंक्शन के बाद और बाहर का कोड तुरंत अनुरोध के बाद चलाया जाएगा, जब डेटा अभी तक उपलब्ध नहीं है। दूसरे शब्दों में:

 first(); d3.csv("path/to/file.csv", function(rows) { third(); }); second(); 

यदि आप d3.csv द्वारा लोड किए गए डेटा का उपयोग करना चाहते हैं, तो आपको या तो कॉलबैक फ़ंक्शन के अंदर उस कोड को डालने की आवश्यकता है (जहां third है, ऊपर):

 d3.csv("path/to/file.csv", function(rows) { doSomethingWithRows(rows); }); function doSomethingWithRows(rows) { // do something with rows } 

या, आप इसे उस विंडो पर एक वैश्विक वैरिएबल के रूप में सहेज सकते हैं जिसे आप बाद में देख सकते हैं:

 var rows; d3.csv("path/to/file.csv", function(loadedRows) { rows = loadedRows; doSomethingWithRows(); }); function doSomethingWithRows() { // do something with rows } 

यदि आप चाहें, तो आप एक वैरिएबल घोषित करने और दो अलग-अलग नामों को प्रबंधित करने के बजाय, लोड किए गए डेटा को स्पष्ट रूप से विंडो ऑब्जेक्ट पर असाइन कर सकते हैं:

 d3.csv("path/to/file.csv", function(rows) { window.rows = rows; doSomethingWithRows(); }); function doSomethingWithRows() { // do something with rows } 

मुझे लगता है कि आपकी समस्या का समय है क्योंकि यह एक एसिंक कॉल है इसलिए, डेटा को अपने जैसा लोड करें, लेकिन डी 3 कोड के भीतर फ़ंक्शन को कॉल करें (जहां माइक ने 'डॉट कामिंग विथरो ()' है)। किसी भी अधिक प्रसंस्करण के साथ अपने डी 3 कोड का पालन न करें (जहां माइक में 'दूसरा ()' है), उस कोड को 'doSomethingWithRows ()' फ़ंक्शन में ले जाएं। इसमें डेटा उपलब्ध होगा और आप जा सकते हैं …

मुझे लगता है कि समस्या पहले ही हल हो चुकी है लेकिन मुझे एक ऐसी ही समस्या का सामना करना पड़ा और उपरोक्त चर्चा उपयोगी नहीं थी तो इस पोस्ट से मुझे इस समस्या से बाहर कैसे निकाला गया है: यहां, कारण data[0] अपरिभाषित है, यह संभवतः क्योंकि यह डेटा ब्राउज़र द्वारा नहीं पढ़ा जाता है यह पढ़ने में विफलता संभवतः डेटा (सीएसवी) फ़ाइल को सीधे लोड करने के कारण है, यानी, निम्न कमांड d3.csv("myCSVfile.csv",....) । यह दृष्टिकोण काम नहीं कर सकता क्योंकि वेब अनुप्रयोगों को सामान्यतः वेब सर्वर से लोड करने की आवश्यकता होती है (यकीन नहीं क्यों यह मामला है)। इसलिए एक स्थानीय वेब सर्वर को जगह में रखा जाना चाहिए। इस फोरम का उपयोग कैसे करें यह जानने के लिए: मैं एक स्थानीय एचटीटीपी सर्वर को पायथन के जरिये कैसे सेटअप करूं ? अद्यतित कोड, यदि आप स्थानीय वेब सर्वर बनाने के लिए पायथन 3 का उपयोग करते हैं तो: d3.csv("http://localhost:8000/myCSVfile.csv",.....)

आप कॉलबैक फ़ंक्शन के बाहर एक चर को घोषित कर सकते हैं और फिर इसे सीएसवी से मानों के साथ प्रदान कर सकते हैं:

 var csv_data; d3.csv("afile.csv", function(data) { data.forEach(function(d) { d.date = formatDate.parse(d.date); d.price = +d.price; csv_data = data; }); 

और फिर कॉलबैक के बाहर csv_data का उपयोग करें