将对象(数组?)转换为字符串

时间:2019-08-10 22:24:43

标签: javascript jquery arrays object

我已经获取了一些代码,但是开发人员无法联系。 它包含一个javascript对象(数组?),我试图将其内容转换为字符串。 我相信其中可能包含一些我需要的数据。

该对象称为SubmitDataDisplay。 目前,它的内容输出到页面的底部(我相信其他包含数据的对象),我可以复制和粘贴它,但我的目的是通过编程将其保存到文本文件中。 我可能马上就开球了,这是不可能的,但我想试试看。

我尝试使用JSON.stringify(obj)来查看内容,但是由于我无法在循环中将相关行项添加到命令中,因此无法获取所有值,因此无法正常工作。

这是来自html文件:

updateRemark(sheet);

$("#J_timingSubmit").click(function(ev){

    var sheetStates = sheet.getSheetStates();
    var rowsCount = dimensions[0];
    var $submitDataDisplay = $("#J_dataDisplay") ;

    $submitDataDisplay.html("<b>Raw Data Submitted:</b><br/>[<br/>");

    for(var row= 0, rowStates=[]; row<rowsCount; ++row){
        rowStates = sheetStates[row];
        $submitDataDisplay.append('&nbsp;&nbsp;[ '+rowStates+' ]'+(row==rowsCount-1?'':',')+'<br/>');

    }


    $submitDataDisplay.append(']');

这来自js文件,我认为这是相关部分:

initSheet();
eventBinding();


var publicAPI = {

    /*
     *  
     * @return : [[1,0,0,...,0,1],[1,0,0,...,0,1],...,[1,0,0,...,0,1]]
     * */
    getSheetStates : function(){
        return sheetModel.getSheetStates();
    },

    setRemark : function(row,html){
        if($.trim(html)!==''){
            $(thisSheet.find(".TimeSheet-row")[row]).find(".TimeSheet-remark").prop("title",html).html(html);
        }
    },

    getDefaultRemark : function(){
        return sheetOption.remarks.default;
    },

};

return publicAPI;

这是发布到网页底部的数据:

Raw Data Submitted:
[
  [ 1,1,0,1,0,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ],
  [ 1,1,1,1,1,1,1 ]
]

我已添加到代码的最后一行:

    $submitDataDisplay.append(']');
    console.log(Object.values($submitDataDisplay));

这给了我一些很好的数据。它包括一个InnerText条目,其中包含我需要的所有数据。

1 个答案:

答案 0 :(得分:0)

$submitDataDislay既不是对象,也不是数组,它是DOM节点,表示您的网页上由jQuery提取的HTML元素。

您发布的代码从名为sheetStates的数组中读取数据,以将其内容写入DOM节点,以便在浏览器中显示。

如果您想将此数据存储在字符串中,则可以将其放在字符串变量中,如下所示:

updateRemark(sheet);

$("#J_timingSubmit").click(function(ev){

    var sheetStates = sheet.getSheetStates();
    var rowsCount = dimensions[0];
    var data = "Raw Data Submitted:\n\n[\n";

    for(var row= 0, rowStates=[]; row<rowsCount; ++row){
        rowStates = sheetStates[row];
        data += '  [ '+rowStates+' ]'+(row==rowsCount-1?'':',')+'\n';

    }

    data += ']';

    console.log(data);
}

这会将数据打印到控制台。