Javascript/jQuery更新日期

Javascript/jQuery更新日期,javascript,jquery,d3.js,graphite,Javascript,Jquery,D3.js,Graphite,我编写了以下正确工作的代码,我正在创建一个新数组,该数组从数字中提取每两个成员并将其除以。样本: var numbers=[{“name”:“testvalue”,“data”:[10]}, {“名称”:“testtotal”,“数据”:[2]}, {“名称”:“prodvalue”,“数据”:[10]}, {“名称”:“prodtotal”,“数据”:[2]}]; var mydata=$.grep(数字,函数(e){ 返回新的RegExp(“^test*”).test(e.name) });

我编写了以下正确工作的代码,我正在创建一个新数组,该数组从数字中提取每两个成员并将其除以。样本:

var numbers=[{“name”:“testvalue”,“data”:[10]},
{“名称”:“testtotal”,“数据”:[2]},
{“名称”:“prodvalue”,“数据”:[10]},
{“名称”:“prodtotal”,“数据”:[2]}];
var mydata=$.grep(数字,函数(e){
返回新的RegExp(“^test*”).test(e.name)
});
log(mydata)//打印[{“name”:“testvalue”,“data”:[10]},{“name”:“testtotal”,“data”:[2]}]
结果=[{
“名称”:“测试结果”,
“数据”:[mydata[0][“数据”]/mydata[1][“数据”]]
}];
console.log(result)/[{“name”:“testresult”,“data”:[5]}]
我的问题是关于效率的,我正在做的是有效的还是有更好的方法来做事情?(我是JS/jQuery新手,这就是为什么我要问这个问题)

我不关心数字的内容,我只想把每两个元素分开,每个元素的名称以total或value结尾

按要求采样真实数据。具体来说,数据来自graphite/d3.json

var数据=
[{“target”:“xs12t11.Busy”,“datapoints”:[34,54,65,76,87]},
{“target”:“xs12t11.Total”,“datapoints”:[34,54,2,12,33]}];

我还不能完全确定我是否理解您的要求。我提供了两个示例,它们迭代
数据
,并将其转换为结果

给定以下可能为奇数行的输入:

var data = 
[ {"target": "xs12t11.Busy",  "datapoints": [34,54,65,76,87] }, 
  {"target": "xs12t11.Total", "datapoints": [34,54,2,12,33]  }, 
  {"target": "xs12t12.Busy",  "datapoints": [34,54,2,12,33]} ];
function sum(inArr) {
    var retVal = 0;

    for(var i = 0; i < inArr.length; ++i) retVal += inArr[i];
    return retVal;
}


var result = [];

// Increment by 2 to grab records in pairs
for(var i = 0; i < data.length; i += 2) {
    var series1 = data[i];
    var series2 = data[i+1];

    // Series1 always exists, but series2 may not
    if(!series2) break;

    result.push({
        name: series1.target.split('.')[0],
        data: sum(series1.datapoints)/sum(series2.datapoints)
    });
}

console.log(JSON.stringify(result));
示例1对每行中的序列求和,并给出每对行的单个平均值:

var data = 
[ {"target": "xs12t11.Busy",  "datapoints": [34,54,65,76,87] }, 
  {"target": "xs12t11.Total", "datapoints": [34,54,2,12,33]  }, 
  {"target": "xs12t12.Busy",  "datapoints": [34,54,2,12,33]} ];
function sum(inArr) {
    var retVal = 0;

    for(var i = 0; i < inArr.length; ++i) retVal += inArr[i];
    return retVal;
}


var result = [];

// Increment by 2 to grab records in pairs
for(var i = 0; i < data.length; i += 2) {
    var series1 = data[i];
    var series2 = data[i+1];

    // Series1 always exists, but series2 may not
    if(!series2) break;

    result.push({
        name: series1.target.split('.')[0],
        data: sum(series1.datapoints)/sum(series2.datapoints)
    });
}

console.log(JSON.stringify(result));
示例2返回具有一系列平均值的每对行的结果:

function avgSeries(series1, series2) {
    var retVal = [];
    var len = Math.min(series1.length, series2.length);

    for(var i = 0; i < len; i++) retVal.push(series1[i]/series2[i]);
    return retVal;
}

var result = [];

// Increment by 2 to grab records in pairs
for(var i = 0; i < data.length; i += 2) {
    var series1 = data[i];
    var series2 = data[i+1];

    // Series1 always exists, but series2 may not
    if(!series2) break;

    result.push({
        name: series1.target.split('.')[0],
        data: avgSeries(series1.datapoints, series2.datapoints)
    });
}

console.log(JSON.stringify(result));

如果这两项都不符合您的要求,请告诉我。

您是否可以控制
数字
?如果是这样,有更好的方法来表示这种结构。现在还不太清楚你在这里做什么,部分原因是数组索引没有那么多信息。是的,问题是这些数据来自d3.json,不幸的是我无法控制,但基本上每个元素都有两个名为“total”和“value”的散列,加上我不能做两次这个请求,所以是的,我被卡住了。我的方法是可行的,但我只是想在这里听取专家的意见。只要你的数据集很小或者你不经常搜索,这不会影响你的性能。我有43项(43*2)。我希望按顺序执行I/I+1,但由于某些原因,d3.json可能不会返回偶数个记录……谢谢!这超出了我的预期:)