【问题标题】:How do I reformat and output a javascript string into array?如何重新格式化 javascript 字符串并将其输出到数组中?
【发布时间】:2014-01-16 06:37:32
【问题描述】:

仍在学习...如果这听起来很愚蠢,再次抱歉:

我有 2 个变量“时间戳”和“点击次数”以及一串数字:

  var myData = {
  "timestamps":[
    1362096000000,1362355200000,1362441600000,1362528000000
  ],
  "clicks":[
    [
      1,2,3,4
    ]
};

我正在尝试将其重组为这种格式的数组:

[1362096000000,1],
[1362355200000,2],
[1362441600000,3],
[1362528000000,4],

这是我目前所拥有的:http://jsfiddle.net/3UsP6/1/

Javascript:

var myData = {"timestamps":[1369008000,1369094400,1369180800,],"clicks":[1,2,3,]};
var output = test; 
for (var i = 0, l = myData.timestamps.length; i < l; i++) 
{ 
    output.push([myData.timestamps[i], myData.clicks[i]]);
}

HTML:

<body onload="javascript:alterText()">
    <a id="test"></a>
</body>

我需要将变量输出到页面正文中,但无法显示。我做错了什么?

【问题讨论】:

    标签: javascript arrays string variables epoch


    【解决方案1】:

    首先,如果您正在调试,最好使用浏览器的调试器(在大多数浏览器中为 F12)。使用console.log() 输出到控制台以查看值。断点会更好,因为它们会暂停代​​码,并且您可以在那一刻检查值。

    现在,对于你所犯的错误:

    • 您的outputtest,即&lt;a&gt;。你不能做 push 因为那不是一个数组。您可以做的是创建一个数组,用值填充它,然后执行JSON.stringify 将其转换为字符串。

    • 您应该使用document.get* 函数,例如document.getElementId() 来引用DOM 元素。尽管浏览器确实会为带有 ids 的元素公开全局变量,但您应该避免这种情况。

    This should fix it:

    function alterText() {
        var myData = {
            "timestamps": [1369008000, 1369094400, 1369180800],
                "clicks": [1, 2, 3]
        };
    
        var output = [];
        var link = document.getElementById('test');
    
        for (var i = 0, l = myData.timestamps.length; i < l; i++) {
            output.push([myData.timestamps[i], myData.clicks[i]]);
        }
    
        // Output to console
        console.log(output);
    
        // Convert array to text and output to element
        link.innerHTML = JSON.stringify(output);
    }
    

    【讨论】:

    • 这太棒了!!非常感谢 - 所以要添加换行符,为什么只在输出中添加“/n”不起作用?
    【解决方案2】:

    jFiddle 的一个大问题是您不包含 jQuery。尝试通过 id 获取元素时,不能只通过名称引用它。下面是一个修改后的版本,它可以输出你想要的东西(虽然不是很好的格式或任何东西)。

    $(function() {
        var myData = {"timestamps":[1369008000,1369094400,1369180800,],"clicks":[1,2,3,]};
    
        var output = $('#test'); 
        for (var i = 0; i < myData.timestamps.length; i++) { 
            output.append([myData.timestamps[i], myData.clicks[i]]);
        }
    });
    

    【讨论】:

    • 你确实看到帖子没有标记 jQuery。
    • 我的错误,没有注意到。谢谢。
    猜你喜欢
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 2020-07-15
    • 2015-04-01
    相关资源
    最近更新 更多