【问题标题】:Convert Object (Array?) To String将对象(数组?)转换为字符串
【发布时间】:2019-08-10 22:24:43
【问题描述】:

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

该对象称为 submitDataDisplay。 目前它的内容被输出到页面底部(我相信 oit 是包含数据的这个对象),我可以复制和粘贴它,但我的目标是以编程方式将其保存到文本文件中。 我可能在这里没有球,这是不可能的,但我想试一试。

我尝试使用 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 条目,其中包含我需要的所有数据。

【问题讨论】:

  • 您能否详细说明或显示您遇到问题的代码?
  • 这是我认为相关的代码。我单击一个运行 js 函数并将输出保存到网页的按钮。 js 文件中的代码是我认为相关的部分。我不想发布整个文件,因为它有 800 多行。我只需要建议是将数据存储到数组中,我将使用什么来获取数据?不是在完整的代码之后,而是在我对我提到的对象的正确轨道上的建议之后。
  • 发布示例数据,然后我可以告诉你如何格式化它
  • 谢谢 Daggie 我已经这样做了。我还让控制台日志正常工作,显示 lots 数据,但有一个包含我需要的数据的 InnerText 条目。
  • 我只需要知道如何将内部文本放入我可以使用的变量中

标签: javascript jquery arrays object


【解决方案1】:

$submitDataDislay 现在既不是一个对象,也不是一个数组,它是一个 DOM 节点,代表网页上的 HTML 元素,由 jQuery 获取。

您发布的代码从名为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);
}

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

【讨论】:

  • 非常感谢。这太棒了。效果比我希望的要好。也感谢有关 DOM 节点主题的信息。还有其他东西让我研究和尝试学习。
猜你喜欢
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
相关资源
最近更新 更多