Javascript/jQuery更新日期
Javascript/jQuery Update Date
我写了下面的代码,它工作正常,我正在创建一个新的数组,它从数字中提取每两个成员并将它们除法。样品:
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]}]
如果这两者都不符合你想要做的事情,请告诉我。
相关文章:
- 正在更新起始日期角度日期范围选择器中的日期选择
- 在日期更改后更新Angular UI引导程序日期选择器选项
- 如何根据其他日期的输入更新日期
- 更新URL时使用Javascript函数显示日期
- 使用 JavaScript 更新日期
- 如何在页面上显示时间、日期IP和URL?更新日期:2015年2月25日
- 如何更新日期?当我运行应用程序时,它被卡住了
- jQuery日期选择器在Firefox和IE的MVC部分视图上进行ajax更新后无法工作
- AngularJS没有't在Django管理日期小部件上的jQuery事件后更新ng模型
- Bootstrap日期选择器中的更新不起作用
- CouchDB 日期格式自动更新
- Javascript 日期意外自动更新
- 如何更新 cookie 值(并且不更改到期日期)?JavaScript
- 如何在不刷新浏览器的情况下更新倒计时达到 0 时的日期
- 如何在引导日期范围选取器日期更改时更新绑定
- jQuery + Boostrap DatePicker:如何让两个日期选择器输入相互更新
- 以编程方式更新 Webshim 日期在 IE 8 中不起作用
- 如何将日期更新为UTC-8的当前日期
- 使用修改日期更新文本区域
- jQuery .val不根据输入日期更新DOM