###前提・実現したいこと
JavaScript初心者です。
JavaScriptとAjaxで、ローカルのCSVファイルを読み込もうとしています。
(CSVファイルは項目ごとにカンマ区切り、データごとに改行されています)
読み込んだテキストは、連想配列をさらに配列に入れた形式に変換しようとしています。
例)tourismList[{id:"1",name:"名前1",areaID:"エリア名1"・・・},{id:"2",name:"名前2",areaID:"エリア名2"・・・},・・・]
読み込んだテキストを連想配列に入れるところまではできたのですが、それをさらに配列に入れようとすると、配列の中身すべてが最終要素で上書きされて入ってしまいます。
document.getElementById("test").innerHTML += arrayT[i]['name']の段階ではきちんとすべての要素が出力できているので、arrayT[i]=tourismListItemのあたりが怪しいと思うのですが、いろいろ調べて試してみても改善できません。
似たような質問内容が過去にもあったのですが、そこでも解決できていないようでしたので改めて質問させていただきます。
修正方法ご存知の方、ご教示よろしくお願いいたします。
###該当のソースコード
javascript
1function csvToArray(path) { 2 var csvData = new Array(); 3 4 var data = new XMLHttpRequest(); 5 data.open("GET", path, false); 6 data.send(null); 7 8 var getCsvData = data.responseText; 9 csvData = getCsvData.split("\n"); 10 return csvData; 11} 12 13function arrayToTourismList(array){ 14 var arrayT = []; 15 var tourismListItem = {}; 16 var headerLine = ['id','name','areaID','category','smallCategory','description','postalCode','address','tell','lat','lng','time','holiday','parking','accsess','fee']; 17 18 for (var i = 1; i < array.length-1; i++) { 19 var value = array[i].split(","); 20 for(var n=0; n<value.length; n++){ 21 var key = headerLine[n]; 22 tourismListItem[key] = value[n]; 23 } 24 arrayT[i]=tourismListItem; 25 document.getElementById("test").innerHTML += arrayT[i]['name'] +"<br />"; 26 } 27 return arrayT; 28} 29 30function initialize(){ 31 var CSVdata = csvToArray("tourist.csv"); 32 var tourismList = arrayToTourismList(CSVdata); 33 ・・・(以降別処理)
###試したこと
arrayT.push(tourismListItem)を試しましたがエラーにより配列に入りませんでした。
コンソールエラー:Uncaught TypeError: Cannot read property 'push' of undefined

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/14 02:11