जावास्क्रिप्ट का उपयोग करके * .CSV फ़ाइल से डेटा कैसे पढ़ें?


194

मेरा सीएसवी डेटा इस तरह दिखता है:

heading1, heading2, heading3, heading4, heading5, value1_1, value2_1, value3_1, value4_1, value5_1, value1_2, value2_2, value3_2, value4_2, value5_2 ....

आप इस डेटा को कैसे पढ़ते हैं और जावास्क्रिप्ट का उपयोग करके इस तरह एक सरणी में परिवर्तित करते हैं ?:

[शीर्ष 1: value1_1, शीर्ष 2: value2_1, शीर्ष 3: मान 3_1, शीर्ष 4: मान 4_1, शीर्ष 5: मान 5_1], [शीर्ष 1: मान 1_2, शीर्ष 2: मान 2_2, शीर्ष 3: मान 4: शीर्ष 4: मान 4_2, शीर्ष 5: मान 5_2] ....

मैंने इस कोड की कोशिश की है, लेकिन कोई भाग्य नहीं! "

<script type="text/javascript">
    var allText =[];
    var allTextLines = [];
    var Lines = [];

    var txtFile = new XMLHttpRequest();
    txtFile.open("GET", "file://d:/data.txt", true);
    txtFile.onreadystatechange = function()
    {
        allText = txtFile.responseText;
        allTextLines = allText.split(/\r\n|\n/);
    };

    document.write(allTextLines);<br>
    document.write(allText);<br>
    document.write(txtFile);<br>
</script>

आपकी CSV फ़ाइल में बिना लाइन ब्रेक के, किसी भी जावास्क्रिप्ट कोड के लिए यह जानना असंभव होगा कि एक सरणी (या ऑब्जेक्ट) कहाँ रुकती है और दूसरी शुरू होती है (जब तक कि आपको पहले से पता न हो कि हमेशा पाँच शीर्षक हैं)। क्या यह कट-एंड-पेस्ट ओवरसाइट था?
ब्लेज़मॉन्गर

हां, मुझे पहले से पता है कि वास्तव में पांच फील्ड हैं।
महेश ठुमर

1
अगला प्रश्न: समाधान में jQuery की अनुमति है? आपने टैग का उपयोग किया है लेकिन आपका नमूना कोड शुद्ध जावास्क्रिप्ट है।
ब्लेज़मॉन्गर

हाँ, jQuery की अनुमति है, यही कारण है कि मैं इसे टैग में शामिल करता हूं।
महेश थुमर

1
मुझे नहीं लगता कि इसके उपयोग की file://...अनुमति है XMLHttpRequest
नोएल लेवलेरेस

जवाबों:


118

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


यह कोड तब काम करेगा जब आपकी data.txtफ़ाइल अल्पविराम-अलग प्रविष्टियों की एक लंबी स्ट्रिंग होगी, जिसमें कोई नया अंक नहीं होगा:

data.txt:

 heading1,heading2,heading3,heading4,heading5,value1_1,...,value5_2

जावास्क्रिप्ट:

$(document).ready(function() {
    $.ajax({
        type: "GET",
        url: "data.txt",
        dataType: "text",
        success: function(data) {processData(data);}
     });
});

function processData(allText) {
    var record_num = 5;  // or however many elements there are in each row
    var allTextLines = allText.split(/\r\n|\n/);
    var entries = allTextLines[0].split(',');
    var lines = [];

    var headings = entries.splice(0,record_num);
    while (entries.length>0) {
        var tarr = [];
        for (var j=0; j<record_num; j++) {
            tarr.push(headings[j]+":"+entries.shift());
        }
        lines.push(tarr);
    }
    // alert(lines);
}

निम्नलिखित कोड रिकॉर्ड के प्रत्येक सेट के बीच लाइनब्रेक के साथ "सही" CSV फ़ाइल पर काम करेगा:

data.txt:

heading1,heading2,heading3,heading4,heading5
value1_1,value2_1,value3_1,value4_1,value5_1
value1_2,value2_2,value3_2,value4_2,value5_2

जावास्क्रिप्ट:

$(document).ready(function() {
    $.ajax({
        type: "GET",
        url: "data.txt",
        dataType: "text",
        success: function(data) {processData(data);}
     });
});

function processData(allText) {
    var allTextLines = allText.split(/\r\n|\n/);
    var headers = allTextLines[0].split(',');
    var lines = [];

    for (var i=1; i<allTextLines.length; i++) {
        var data = allTextLines[i].split(',');
        if (data.length == headers.length) {

            var tarr = [];
            for (var j=0; j<headers.length; j++) {
                tarr.push(headers[j]+":"+data[j]);
            }
            lines.push(tarr);
        }
    }
    // alert(lines);
}

http://jsfiddle.net/mblase75/dcqxr/


4
वैसे, यह मानता है कि CSV फ़ाइल वास्तव में कई पंक्तियाँ है - यही allText.split(/\r\n|\n/)विभाजन पर है। यदि आपका सभी डेटा वास्तव में अल्पविराम से अलग किए गए डेटा का एक नया तार है, जिसमें कोई नई सीमा नहीं है, तो यह वास्तविक CSV फ़ाइल नहीं है।
ब्लेज़मॉन्गर

1
नमस्ते मैंने इस कोड का उपयोग किया है: लेकिन कोई आउटपुट नहीं है। बस एक खाली चेतावनी प्रदर्शित की गई। मेरी फ़ाइल इस तरह दिखती है: शीर्ष 1, शीर्ष 2, शीर्ष 3, शीर्ष 4, शीर्ष 5, मान 1_1, value2_1, value3_1, value4_1, value5_1, value1_2, value2_2, value3_2, value4_2, value5_2 दोनों csv.html और data.txt एक ही फ़ोल्डर में हैं
महेश थुमर

अगर यह सही फ़ाइल (या डेटा) नहीं है तो मेरी फ़ाइल कैसी दिखनी चाहिए ??
महेश थुमर

7
कोड सभी मान्य IETF मानक CSV फ़ाइलों को संभाल नहीं सकता है, और विफल हो सकता है अगर वहाँ तार होते हैं जिनमें एम्बेडेड अल्पविराम, लाइन विराम या डबल उद्धरण होते हैं। उदाहरण के लिए, 1, "IETF allows ""quotes"", commas and \nline breaks"जिसकी अनुमति दी गई है क्योंकि स्ट्रिंग दोहरे उद्धरण चिह्नों से घिरा हुआ है, और दोहरे उद्धरण बच गए हैं।
प्रोटोटाइप

1
मैं एक .csv फ़ाइल को एक मैक से पढ़ने की कोशिश कर रहा था। मैं केवल नई स्क्रिप्ट को पहचानने के लिए इस स्क्रिप्ट को प्राप्त करने में सक्षम था, जब मैंने इसके लिए पहला विभाजन बदल दिया var allTextLines = allText.split("\r"); उसके बाद यह बहुत अच्छा काम किया! धन्यवाद!
जो

206

खुद लिखने की जरूरत नहीं ...

JQuery-सीएसवी पुस्तकालय में एक समारोह में कहा जाता है $.csv.toObjects(csv)कि मानचित्रण स्वचालित रूप से करता है।

नोट: लाइब्रेरी को किसी भी CSV डेटा को संभालने के लिए डिज़ाइन किया गया है जो कि RFC 4180 कंप्लेंट है, जिसमें सभी नोज़ी एज केस शामिल हैं, जिनमें से अधिकांश 'सिंपल' सॉल्यूशन को नजरअंदाज करते हैं।

जैसा कि @Blazemonger पहले से ही कहा गया है, पहले आपको डेटा को वैध CSV बनाने के लिए लाइन ब्रेक जोड़ने की आवश्यकता है।

निम्नलिखित डेटासेट का उपयोग करना:

heading1,heading2,heading3,heading4,heading5
value1_1,value2_1,value3_1,value4_1,value5_1
value1_2,value2_2,value3_2,value4_2,value5_2

कोड का उपयोग करें:

var data = $.csv.toObjects(csv):

'डेटा' में सहेजा गया आउटपुट होगा:

[
  { heading1:"value1_1",heading2:"value2_1",heading3:"value3_1",heading4:"value4_1",heading5:"value5_1" } 
  { heading1:"value1_2",heading2:"value2_2",heading3:"value3_2",heading4:"value4_2",heading5:"value5_2" }
]

नोट: तकनीकी रूप से, आपने कुंजी-मूल्य मैपिंग को जिस तरह से लिखा है वह अमान्य जावास्क्रिप्ट है। की-वैल्यू पेयर वाली वस्तुओं को कोष्ठक में लपेटा जाना चाहिए।

यदि आप इसे अपने लिए आज़माना चाहते हैं, तो मेरा सुझाव है कि आप 'toObjects ()' टैब के तहत मूल उपयोग प्रदर्शन पर एक नज़र डालें ।

अस्वीकरण: मैं jQuery-CSV का मूल लेखक हूं।

अपडेट करें:

डेटासेट का उपयोग करने के लिए संपादित, जो op प्रदान करता है और डेमो के लिए एक लिंक शामिल करता है जहां डेटा की वैधता के लिए परीक्षण किया जा सकता है।

Update2:

Google कोड के शटरिंग के कारण। jquery-csv GitHub में स्थानांतरित हो गया है


3
IOW, "toObject" है या "toJSON" के रूप में सोचा जा सकता है, नहीं? और, क्या कॉल toObjects (csv) टाइपो के बाद है? IOW, क्या यह अर्धविराम नहीं होना चाहिए?
बी क्ले शैनन

11
क्या CSV एक फ़ाइल नाम है?
बुलबुला

10
शानदार पुस्तकालय। FYI करें, csvपारित पैरामीटर एक csv स्ट्रिंग है - सीएसवी फ़ाइल को पाठ के रूप में पढ़िए सीएसवी स्ट्रिंग प्राप्त करने के लिए।
callmekatootie

3
@ ईवन पट्टिका सीएसवी फ़ाइल से पढ़ने के लिए इस पुस्तकालय का उपयोग कैसे करें?
ऋचा सिन्हा

1
@RichaSinha HTML5 फ़ाइल एपीआई या AJAX के माध्यम से एक पाठ बफर के रूप में फ़ाइल पढ़ें। फिर स्ट्रिंग बफर को पार्सर में पास करें। यह परिणामस्वरूप डेटा की एक सरणी थूक देगा। उदाहरण के लिए प्रोजेक्ट पेज देखें।
इवान प्लाइस

75

अल्पविराम पर विभाजित न करें - यह अधिकांश CSV फ़ाइलों के लिए काम नहीं करेगा, और इस प्रश्न में हर किसी पर लागू होने के लिए डेटा के पूछने वाले के प्रकार के लिए बहुत सारे विचार हैं। CSV को पार्स करना एक तरह से डरावना है क्योंकि वास्तव में कोई आधिकारिक मानक नहीं है, और बहुत सारे सीमांकित पाठ लेखक किनारे के मामलों पर विचार नहीं करते हैं।

यह प्रश्न पुराना है, लेकिन मेरा मानना ​​है कि अब एक बेहतर समाधान है कि पापा पार्स उपलब्ध हैं। यह एक पुस्तकालय है जिसे मैंने योगदानकर्ताओं की मदद से लिखा है, जो CSV पाठ या फ़ाइलों को पार्स करता है। यह एकमात्र JS लाइब्रेरी है, जिसके बारे में मुझे पता है कि आकार में फ़ाइलों को गीगाबाइट का समर्थन करती है। यह कुरूप इनपुट को इनायत से संभालता है।

1 जीबी फ़ाइल 1 मिनट में पार्स हुई: 1 मिनट में 1 जीबी फ़ाइल पार्स की गई

( अपडेट: पापा पार्स 4 के साथ, उसी फ़ाइल को फ़ायरफ़ॉक्स में केवल 30 सेकंड के लिए लिया गया था। पापा पार्स 4 अब ब्राउज़र के लिए सबसे तेजी से ज्ञात सीएसवी पार्सर है।)

पार्सिंग पाठ बहुत आसान है:

var data = Papa.parse(csvString);

पार्सिंग फ़ाइल भी आसान है:

Papa.parse(file, {
    complete: function(results) {
        console.log(results);
    }
});

फ़ाइलें स्ट्रीम करना समान है (यहां एक उदाहरण है जो दूरस्थ फ़ाइल स्ट्रीम करता है):

Papa.parse("http://example.com/bigfoo.csv", {
    download: true,
    step: function(row) {
        console.log("Row:", row.data);
    },
    complete: function() {
        console.log("All done!");
    }
});

यदि आपका वेब पेज पार्स करने के दौरान लॉक हो जाता है, तो पापा वेब साइट का उपयोग करके आपकी वेब साइट को प्रतिक्रियाशील रख सकते हैं।

यदि शीर्ष लेख पंक्ति मौजूद है, तो पापा सीमांकक के साथ ऑटो-डिटेक्ट कर सकते हैं और मानों का मिलान कर सकते हैं। यह संख्यात्मक मानों को वास्तविक संख्या प्रकारों में भी बदल सकता है। यह उचित रूप से पार्स लाइन को तोड़ता है और उद्धरण और अन्य अजीब स्थितियों, और यहां तक ​​कि विकृत इनपुट को यथासंभव मजबूत बनाता है। मैंने पापा को बनाने के लिए मौजूदा पुस्तकालयों से प्रेरणा ली है, इसलिए अन्य जेएस कार्यान्वयनों को सहारा देता हूं।


पापा उपयोग में आसान और तेज हैं! धन्यवाद!
टेक्नोट्रॉनिक

+1 पापा परसे अच्छा काम। मैं इसे किसी दिन विस्तार से अध्ययन करना चाहता हूं कि आपने बड़ी फ़ाइलों और स्ट्रीमिंग को कैसे संभाला है। मैं अन्य डेवलपर्स को पूरी तरह से चित्रित पार्सर लिखते हुए देखकर बहुत खुश हूं जो उठा जहां jquery-csv ने छोड़ दिया।
इवान प्लाइस

3
@EvanPlaice साभार आपको यह प्रस्तुति पसंद आ सकती है जो मैंने कल रात एक स्थानीय मीटअप में दी थी: docs.google.com/pretation/d/…
मैट

1
@ मैट वह एक कमाल की प्रस्तुति थी, जो पापा पार्स के बारे में अधिक समझदारी से बताती है
शिव

1
@ Malky.Kid यह मान्य नहीं है CSV (यानी गैर-सीमांकित मान में रिक्त स्थान अच्छे नहीं हैं)। MS Excel का CSV प्रारूप कार्यान्वयन बेकार है। यदि आपके पास अभी भी स्रोत फ़ाइल तक पहुंच है, तो उद्धरण को सक्षम करने के लिए एक विकल्प होना चाहिए। एक बार जब आप ऐसा कर लेते हैं, तो आपका डेटा किसी भी सीएसवी पार्सर के साथ काम करना चाहिए।
इवान प्लाइस

9

मैं सीएसवी फ़ाइल को पार्स करने के लिए d3.js का उपयोग कर रहा हूं । उपयोग करने के लिए बहुत आसान है। यहाँ डॉक्स है

कदम:

  • npm d3-request स्थापित करें

ईएस 6 का उपयोग करना;

import { csv } from 'd3-request';
import url from 'path/to/data.csv';

csv(url, function(err, data) {
 console.log(data);
})

कृपया अधिक के लिए डॉक्स देखें ।

अद्यतन - d3- अनुरोध पदावनत है। आप d3-fetch का उपयोग कर सकते हैं


4

आप मदद करने के लिए PapaParse का उपयोग कर सकते हैं। https://www.papaparse.com/

यहाँ एक CodePen है। https://codepen.io/sandro-wiggers/pen/VxrxNJ

Papa.parse(e, {
            header:true,
            before: function(file, inputElem){ console.log('Attempting to Parse...')},
            error: function(err, file, inputElem, reason){ console.log(err); },
            complete: function(results, file){ $.PAYLOAD = results; }
        });

3

यहां एक जावास्क्रिप्ट फ़ंक्शन है जो सीएसवी डेटा को पार्स करता है, उद्धरणों के अंदर अल्पविराम के लिए लेखांकन।

// Parse a CSV row, accounting for commas inside quotes                   
function parse(row){
  var insideQuote = false,                                             
      entries = [],                                                    
      entry = [];
  row.split('').forEach(function (character) {                         
    if(character === '"') {
      insideQuote = !insideQuote;                                      
    } else {
      if(character == "," && !insideQuote) {                           
        entries.push(entry.join(''));                                  
        entry = [];                                                    
      } else {
        entry.push(character);                                         
      }                                                                
    }                                                                  
  });
  entries.push(entry.join(''));                                        
  return entries;                                                      
}

सीएसवी फ़ाइल को पार्स करने के लिए फ़ंक्शन का उदाहरण उपयोग जो इस तरह दिखता है:

"foo, the column",bar
2,3
"4, the value",5

सरणियों में:

// csv could contain the content read from a csv file
var csv = '"foo, the column",bar\n2,3\n"4, the value",5',

    // Split the input into lines
    lines = csv.split('\n'),

    // Extract column names from the first line
    columnNamesLine = lines[0],
    columnNames = parse(columnNamesLine),

    // Extract data from subsequent lines
    dataLines = lines.slice(1),
    data = dataLines.map(parse);

// Prints ["foo, the column","bar"]
console.log(JSON.stringify(columnNames));

// Prints [["2","3"],["4, the value","5"]]
console.log(JSON.stringify(data));

यहां बताया गया है कि आप डेटा को वस्तुओं में कैसे बदल सकते हैं, जैसे कि डी 3 के सीएसवी पार्सर (जो एक ठोस तृतीय पक्ष समाधान है):

var dataObjects = data.map(function (arr) {
  var dataObject = {};
  columnNames.forEach(function(columnName, i){
    dataObject[columnName] = arr[i];
  });
  return dataObject;
});

// Prints [{"foo":"2","bar":"3"},{"foo":"4","bar":"5"}]
console.log(JSON.stringify(dataObjects));

यहाँ इस कोड की एक कामकाजी पहेली है

का आनंद लें! - कर्रन


1

यहाँ एक बाहरी CSV को जावास्क्रिप्ट (jQuery का उपयोग करके) पढ़ने का एक और तरीका है ।

यह थोड़ा अधिक लंबा घुमावदार है, लेकिन मुझे लगता है कि सरणियों में डेटा को पढ़कर आप इस प्रक्रिया का पालन कर सकते हैं और आसान समस्या निवारण के लिए बना सकते हैं।

किसी और की मदद कर सकते हैं।

डेटा फ़ाइल उदाहरण:

Time,data1,data2,data2
08/11/2015 07:30:16,602,0.009,321

और यहाँ कोड है:

$(document).ready(function() {
 // AJAX in the data file
    $.ajax({
        type: "GET",
        url: "data.csv",
        dataType: "text",
        success: function(data) {processData(data);}
        });

    // Let's process the data from the data file
    function processData(data) {
        var lines = data.split(/\r\n|\n/);

        //Set up the data arrays
        var time = [];
        var data1 = [];
        var data2 = [];
        var data3 = [];

        var headings = lines[0].split(','); // Splice up the first row to get the headings

        for (var j=1; j<lines.length; j++) {
        var values = lines[j].split(','); // Split up the comma seperated values
           // We read the key,1st, 2nd and 3rd rows 
           time.push(values[0]); // Read in as string
           // Recommended to read in as float, since we'll be doing some operations on this later.
           data1.push(parseFloat(values[1])); 
           data2.push(parseFloat(values[2]));
           data3.push(parseFloat(values[3]));

        }

    // For display
    var x= 0;
    console.log(headings[0]+" : "+time[x]+headings[1]+" : "+data1[x]+headings[2]+" : "+data2[x]+headings[4]+" : "+data2[x]);
    }
})

आशा है कि यह भविष्य में किसी की मदद करता है!


भविष्य से नमस्कार, इसलिए मैंने इस उत्तर को आज़माया और यह )लाइन 45 पर एक संकेत याद कर रहा था इसलिए मैंने इसे जोड़ा, लेकिन अब लाइन 9 पर यह मुझे सांत्वना त्रुटि दे रहा है Uncaught ReferenceError: $ is not defined at index.html:9क्या आप इसमें सहायता कर सकते हैं?
Lasagna Cat

1
function CSVParse(csvFile)
{
    this.rows = [];

    var fieldRegEx = new RegExp('(?:\s*"((?:""|[^"])*)"\s*|\s*((?:""|[^",\r\n])*(?:""|[^"\s,\r\n]))?\s*)(,|[\r\n]+|$)', "g");   
    var row = [];
    var currMatch = null;

    while (currMatch = fieldRegEx.exec(this.csvFile))
    {
        row.push([currMatch[1], currMatch[2]].join('')); // concatenate with potential nulls

        if (currMatch[3] != ',')
        {
            this.rows.push(row);
            row = [];
        }

        if (currMatch[3].length == 0)
            break;
    }
}

मुझे लगता है कि जितना संभव हो सके रेगेक्स करना पसंद है। यह रेगेक्स सभी वस्तुओं को या तो उद्धृत या अयोग्य मानता है, इसके बाद या तो कॉलम सीमांकक, या एक पंक्ति सीमांकक। या पाठ का अंत।

यही कारण है कि अंतिम स्थिति - इसके बिना यह एक अनंत लूप होगा क्योंकि पैटर्न एक शून्य लंबाई क्षेत्र (सीएसवी में पूरी तरह से मान्य) से मेल खा सकता है। लेकिन चूंकि $ एक शून्य लंबाई का दावा है, यह एक गैर मैच के लिए प्रगति नहीं करेगा और लूप को समाप्त करेगा।

और FYI करें, मुझे मूल्य के आसपास के दूसरे वैकल्पिक बहिष्कृत उद्धरण बनाने थे; ऐसा लगता है कि यह मेरे जावास्क्रिप्ट इंजन पर पहले विकल्प से पहले निष्पादित हो रहा था और उद्धरणों को निर्विवाद मान के हिस्से के रूप में विचार कर रहा था। मैं नहीं पूछूंगा - बस काम करने के लिए मिल गया।


दुर्भाग्य से मैं इस फ़ंक्शन के साथ एक अनंत लूप में आ गया।
हूक

@Hauke ​​- यदि आप डेटा को कुछ स्तंभों और रेखाओं में तोड़ सकते हैं जो अभी भी अनंत लूप का उत्पादन करते हैं, तो मैं इसकी सराहना करूंगा - यह मुझे इस बात की जानकारी दे सकता है कि मैं पहले क्यों विफल हो रहा था।
गेरार्ड ओनली

1

प्रति स्वीकार किए जाते हैं जवाब ,

मुझे यह 1 से 0 में बदलकर काम करने के लिए मिला है:

for (var i=1; i<allTextLines.length; i++) {

में परिवर्तित किया गया

for (var i=0; i<allTextLines.length; i++) {

यह एक फ़ाइल की गणना एक निरंतर लाइन के साथ करता है, जिसमें allTextLines.length 1. होता है। यदि लूप 1 से शुरू होता है और 1 से कम चलता है, तो यह कभी नहीं चलता है। इसलिए खाली अलर्ट बॉक्स।


0

यदि आप इसे अजाक्स का उपयोग किए बिना हल करना चाहते हैं , तो FileReader()वेब एपीआई का उपयोग करें ।

उदाहरण कार्यान्वयन:

  1. .csvफ़ाइल का चयन करें
  2. आउटपुट देखें

function readSingleFile(e) {
  var file = e.target.files[0];
  if (!file) {
    return;
  }

  var reader = new FileReader();
  reader.onload = function(e) {
    var contents = e.target.result;
    displayContents(contents);
    displayParsed(contents);
  };
  reader.readAsText(file);
}

function displayContents(contents) {
  var element = document.getElementById('file-content');
  element.textContent = contents;
}

function displayParsed(contents) {
  const element = document.getElementById('file-parsed');
  const json = contents.split(',');
  element.textContent = JSON.stringify(json);
}

document.getElementById('file-input').addEventListener('change', readSingleFile, false);
<input type="file" id="file-input" />

<h3>Raw contents of the file:</h3>
<pre id="file-content">No data yet.</pre>

<h3>Parsed file contents:</h3>
<pre id="file-parsed">No data yet.</pre>


0
$(function() {

      $("#upload").bind("click", function() {
            var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.xlsx)$/;
            if (regex.test($("#fileUpload").val().toLowerCase())) {
              if (typeof(FileReader) != "undefined") {
                var reader = new FileReader();
                reader.onload = function(e) {
                    var customers = new Array();
                    var rows = e.target.result.split("\r\n");
                    for (var i = 0; i < rows.length - 1; i++) {
                      var cells = rows[i].split(",");
                      if (cells[0] == "" || cells[0] == undefined) {
                        var s = customers[customers.length - 1];
                        s.Ord.push(cells[2]);
                      } else {
                        var dt = customers.find(x => x.Number === cells[0]);
                        if (dt == undefined) {
                          if (cells.length > 1) {
                            var customer = {};
                            customer.Number = cells[0];
                            customer.Name = cells[1];
                            customer.Ord = new Array();

                            customer.Ord.push(cells[2]);
                            customer.Point_ID = cells[3];
                            customer.Point_Name = cells[4];
                            customer.Point_Type = cells[5];
                            customer.Set_ORD = cells[6];
                            customers.push(customer);
                          }
                        } else {
                          var dtt = dt;
                          dtt.Ord.push(cells[2]);

                        }
                      }
                    }

हालांकि यह कोड प्रश्न को हल कर सकता है, जिसमें यह भी बताया गया है कि यह समस्या कैसे और क्यों हल करती है, इससे वास्तव में आपके पोस्ट की गुणवत्ता को बेहतर बनाने में मदद मिलेगी, और संभवत: अधिक वोट मिले। याद रखें कि आप भविष्य में पाठकों के लिए सवाल का जवाब दे रहे हैं, न कि केवल उस व्यक्ति से जो अब पूछ रहा है। कृपया स्पष्टीकरण जोड़ने के लिए अपने उत्तर को संपादित करें और संकेत दें कि क्या सीमाएँ और मान्यताएँ लागू होती हैं। समीक्षा से
डबल-बीप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.