如何重新格式化并将javascript字符串输出到数组中?

时间:2013-12-29 02:30:43

标签: javascript arrays string variables epoch

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

我有2个变量“timestamps”和“clicks”以及一串数字:

  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>

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

2 个答案:

答案 0 :(得分:0)

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

现在,因为你犯的错误:

  • output test<a>。你不能做push,因为那不是一个数组。你可以做的是创建一个数组,用数值填充它,并做一个JSON.stringify把它变成一个字符串。

  • 您应该使用document.get*函数,例如document.getElementId()来引用DOM元素。虽然浏览器确实为id s的元素公开了全局变量,但你应该避免这种情况。

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);
}

答案 1 :(得分:0)

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]]);
    }
});