Javascript/jQuery更新日期

Javascript/jQuery Update Date

本文关键字:日期 更新 jQuery Javascript      更新时间:2023-09-26

我写了下面的代码,它工作正常,我正在创建一个新的数组,它从数字中提取每两个成员并将它们除法。样品:

var numbers = [{ "name": "testvalue", "data": [10] }, 
               { "name": "testtotal", "data": [2]  }, 
               { "name": "prodvalue", "data": [10] }, 
               { "name": "prodtotal", "data": [2]  }];
var mydata = $.grep(numbers, function(e) {
    return new RegExp('^test*').test(e.name)
});
console.log(mydata) // prints [{"name": "testvalue", "data": [10]}, {"name": "testtotal", "data": [2]}]
result = [{
    "name": "testresult",
    "data": [mydata[0]["data"] / mydata[1]["data"]]
}];
console.log(result) // [{"name": "testresult", "data": [5]}]

我的问题是关于效率,我所做的是高效的,还是有更好的方法来做事?(我是JS/jQuery的新手,这就是我问这个问题的原因)。

我不在乎数字的内容,我只想把每两个元素分开,每个元素的名称都以总和或值结尾

根据要求提供真实数据样本。特别是数据来自石墨/d3.json

var data = 
[ {"target": "xs12t11.Busy",  "datapoints": [34,54,65,76,87] }, 
  {"target": "xs12t11.Total", "datapoints": [34,54,2,12,33]} ];

我仍然不能完全确定我是否理解您的要求。我提供了两个在data上迭代并将其转换为结果的示例。

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

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

示例1对每行中的序列求和,并用每对行的单个平均值得出结果:

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

输出

[{"name":"xs12t11","data":2.3407407407407406}]

示例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));

输出

[{"name":"xs12t11","data":[1,1,32.5,6.333333333333333,2.6363636363636362]}]

如果这两者都不符合你想要做的事情,请告诉我。