Javascript将一个表拆分为多个表

Javascript Splitting a table into multiple tables

本文关键字:拆分 一个 Javascript      更新时间:2023-09-26

我正在尝试一个由传入的JSON表创建的动态表。

JSON表遵循上面的格式:

[timestamp, value1, value2, value3, value4]

值的数量不是固定的,一个查询可以返回4个值,下一个可以返回5、6、7。。。表格在表格数据中

下面的代码试图创建另一个表,如下所示:

s[1] = [Timestamp, value1]
s[2] = [Timestamp, value2]
s[3] = [Timestamp, value3]
....

这是代码

var s = new Array();
for (var i = 0; i < data.length-1; i++) {
    var myrow = String(data[i]);
    var l = (myrow.match(/,/g) || []).length + 1
    var myarr = myrow.split(",");
    for (var j = 1; j < l; j++){
        if (isNaN(s[j])) {
            s[j] = new Array(2);
        }
        if (parseFloat(myarr[j]) != 0){
            s[j].push([parseInt(myarr[0]), parseFloat(myarr[j])]);
        }
}

但是当我执行这个代码时,我所有的s[j]都是NaN。

下面是我期望得到的一个例子:

//first iteration
data = ["1413370800000", "68.400580793576", "35.854875270197", "0"]
timestamp = 1413370800000
value1 = 68.400580793576
s[1] = [1413370800000, 68.400580793576]
timestamp = 1413370800000
value2 = 35.854875270197
s[2] = [1413370800000, 35.854875270197]
timestamp = 1413370800000
value3 = 0 
s[3] = [1413370800000, 0]
//second iteration
data = ["1413356400000", "125.99187714667", "19.503481981345", "138.13301276328"]
s[1] = [[1413370800000, 68.400580793576], [1413356400000, 125.99187714667]]
s[2] = [1413370800000, 35.854875270197], [1413356400000, 19.503481981345]]
s[3] = [1413370800000, 0],  [1413356400000, 138.13301276328]]

你能帮我吗?

感谢

这个怎么样:

data = ["1413370800000", "68.400580793576", "35.854875270197", "0"]
ts = new Date(parseInt(data.shift())); // or whatever...
data2 = data.map(function(x) {
  return [ts, parseFloat(x)]; 
});
  
document.write(JSON.stringify(data2));

一般来说,Javascript迭代方法会产生比纯循环更简单、可读性更强的代码。

至于georg的答案,但使用for循环(并假设您希望字符串转换为数字):

data = ["1413370800000", "68.400580793576", "35.854875270197", "0"]
for (var i=1, data2=[]; i<data.length; i++) {
  data2.push([+data[0], +data[i]]);
}