Javascript 使用.join()连接嵌套在数组内部对象中的数组无效

Javascript 使用.join()连接嵌套在数组内部对象中的数组无效,javascript,arrays,object,join,Javascript,Arrays,Object,Join,我接收一个文件,对其进行解析,将信息存储在一个对象中,并将该对象推送到一个数组中。该对象的一个值是“序列”:[]名称-值对。一旦我将一个DNA序列存储到我的对象中的'sequence'值中,我想连接所有元素。但是,我尝试使用.join()执行此操作,但没有效果。下面是我的代码: // Check for the various File API support. if (window.File && window.FileReader && window.File

我接收一个文件,对其进行解析,将信息存储在一个对象中,并将该对象推送到一个数组中。该对象的一个值是“序列”:[]名称-值对。一旦我将一个DNA序列存储到我的对象中的'sequence'值中,我想连接所有元素。但是,我尝试使用.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);

您需要将结果存储在变量中,例如:

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

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

您需要将结果存储在变量中,例如:

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

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

您正在错误地使用join。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]);
}
for(变量i=0;i
您未正确使用join。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]);
}
for(变量i=0;i
使用readAsArrayBuffer、readAsBinaryString、readAsDataURL或readAsText读取不是更好吗?如中所述,使用readAsArrayBuffer、readAsBinaryString、,如中所述,readAsDataURL或readAsText不应在阵列上的in循环中使用
,也不应在阵列上的in
循环中使用
。我也这样做了,但没有完全按照我的需要工作。但是谢谢你的帮助!我也这么做了,但没有完全按照我需要的那样工作。但是谢谢你的帮助!