2016-06-29 6 views
1

ファイルを取り込み、解析し、その情報をオブジェクトに格納し、そのオブジェクトを配列にプッシュします。オブジェクトは「シーケンス」:[]名前の値のペアです。いったん私のオブジェクト内の '配列'の値にDNA配列を格納すると、私はすべての要素に加わりたいと思います。しかし、私は使用して.join()を無駄にしようとしました。以下は私のコードです:.join()を使用して配列内のオブジェクトにネストされた配列を結合していません。

// Check for the various File API support. 
if (window.File && window.FileReader && window.FileList && window.Blob) { 
    // Great success! All the File APIs are supported. 
} else { 
    alert('The File APIs are not fully supported in this browser.'); 
} 

var objArray = []; 
var obj; 

function parse(event) { 
//Get the file from HTML input tag 
var file = event.target.files[0]; 

if(file) { 

    //Create a new file reader 
    var reader = new FileReader(); 
    //When the file reader loads 
    reader.onload = function(evt) { 
     //Add the contents of file to variable contents 
     var contentsByLine = evt.target.result.split('\n'); 
     //Alert user the file upload has succeeded 
     console.log('File ' + file.name + ' was successfully loaded.'); 

     for(var i in contentsByLine){ 
      if(contentsByLine[i][0] == '>'){ 
       obj = { 
        id: contentsByLine[i], 
        sequence: [], 
        lead_trim: 0, 
        trail_trim: 0 
       }; 
       objArray.push(obj); 
      }else{ 
       obj.sequence.push(contentsByLine[i]); 
      } 
      // console.log(objArray[i]['sequence']); 
     } 
     console.log(objArray) 

     // Create the DataView. 
     var dataView = new Slick.Data.DataView(); 

     // Pass it as a data provider to SlickGrid. 
     var grid = new Slick.Grid("#table", dataView, columns, options); 

     // Make the grid respond to DataView change events. 
     dataView.onRowCountChanged.subscribe(function (e, args) { 
      grid.updateRowCount(); 
      grid.render(); 
     }); 

     dataView.onRowsChanged.subscribe(function (e, args) { 
      grid.invalidateRows(args.rows); 
      grid.render(); 
     }); 

     var data = []; 

     for (var i in objArray){ 
      objArray[i]['sequence'].join(); 
      data.push(objArray[i]); 
     } 

     dataView.setItems(data); 
     dataView.getItems(); 
     //console.log(data); 
    } 
    reader.readAsText(file); 
} else { 
    alert('Failed to upload file!'); 
} 

} 

document.getElementById('fileItem').addEventListener('change', parse, false); 
+0

はそれはreadAsArrayBuffer、readAsBinaryString、readAsDataURLまたは[ドキュメント]で述べたようにreadAsText(https://developer.mozilla.org/を使用して読み取ることが良いとは限りませんen-US/docs/Web/API/FileReader/onload) –

答えて

0

あなたは間違って結合を使用しています。 Joinは値を返します。あなたは何かにそれを設定する必要があります。

for (var i in objArray){ 
    objArray[i]['sequence'].join(); 
    data.push(objArray[i]); 
} 

ではなくなるはずです。

for (var i = 0; i < objArray.length; i++){ 
    objArray[i]['sequenceString'] = objArray[i]['sequence'].join(); 
    data.push(objArray[i]); 
} 
+2

は配列の 'for for'ループを使うべきではありません – charlietfl

0

あなたは変数などにつながる格納する必要があります。

var result = objArray[i]['sequence'].join(); 
data.push(result); 

短い:

data.push(objArray[i]['sequence'].join()); 
+0

私もそうしましたが、私が必要としていたのと全く同じように動作しませんでした。しかし、助けてくれてありがとう! –

関連する問題