如何在 JavaScript 中同时检查最小值和最大值? [英] How to check Min and Max values simultaneously in JavaScript?
问题描述
我不确定我是否理解正确:检索数据比对该数据运行逻辑操作慢得多.所以,而不是:
var maxX = Math.max.apply(Math, data.map(function(o) { return o[xAxis]; }));var minY = Math.min.apply(Math, data.map(function(o) { return o[xAxis]; }));var maxY = Math.max.apply(Math, data.map(function(o) { return o[yAxis]; }));var minY = Math.min.apply(Math, data.map(function(o) { return o[yAxis]; }));
我是否可以通过只遍历一次 data
集来检查最小值/最大值,并且可能同时检查 X 和 Y(因为 data
是一个在这种情况下的 JSON 对象数组)?这对客户端(浏览器)或服务器(例如 Node.js)有任何性能优势吗?
感谢您的解释.
示例数据:
<预><代码>[{日期:'10.10.2000',xAxis:20.9,yAxis:120},{日期:'11.10.2000',xAxis:35.1,yAxis:121},{日期:'12.10.2000',xAxis:21.2,yAxis:109},{日期:'13.10.2000',xAxis:28.4,yAxis:119},{ 日期:'14.10.2000',xAxis:24.4,yAxis:121}]您可以使用 Array.reduce
一次计算所有四个值:
var 数据 = [{日期:'10.10.2000',xAxis:20.9,yAxis:120},{日期:'11.10.2000',xAxis:35.1,yAxis:121},{日期:'12.10.2000',xAxis:21.2,yAxis:109},{日期:'13.10.2000',xAxis:28.4,yAxis:119},{ 日期:'14.10.2000',xAxis:24.4,yAxis:121}];变量初始化 = {xMin:数据[0].xAxis,xMax:数据[0].xAxis,yMin: 数据[0].yAxis,yMax:数据[0].yAxis};var 结果 = data.reduce(function(previtem, curritem) {if (previtem.xMin > curritem.xAxis) previtem.xMin = curritem.xAxis;if (previtem.xMax < curritem.xAxis) previtem.xMax = curritem.xAxis;if (previtem.yMin > curritem.yAxis) previtem.yMin = curritem.yAxis;if (previtem.yMax < curritem.yAxis) previtem.yMax = curritem.yAxis;返回previte;}, 在里面);控制台日志(结果);//{ xMin: 20.9, xMax: 35.1, yMin: 109, yMax: 121 }
I'm not sure if I understand correctly: retrieving data is much slower than running a logical operation on that data. So, instead of:
var maxX = Math.max.apply(Math, data.map(function(o) { return o[xAxis]; }));
var minY = Math.min.apply(Math, data.map(function(o) { return o[xAxis]; }));
var maxY = Math.max.apply(Math, data.map(function(o) { return o[yAxis]; }));
var minY = Math.min.apply(Math, data.map(function(o) { return o[yAxis]; }));
can I check for both min/max by traversing the data
set only once, and perhaps check for X and Y also at the same time (since data
is an array of JSON objects in this case)? And would this have any performance benefit in client(browser) or server(ex. Node.js)?
Thanks for any explanation.
Sample data:
[
{ date: '10.10.2000', xAxis: 20.9, yAxis: 120 },
{ date: '11.10.2000', xAxis: 35.1, yAxis: 121 },
{ date: '12.10.2000', xAxis: 21.2, yAxis: 109 },
{ date: '13.10.2000', xAxis: 28.4, yAxis: 119 },
{ date: '14.10.2000', xAxis: 24.4, yAxis: 121 }
]
You can use Array.reduce
to calculate all four values in one go:
var data = [
{ date: '10.10.2000', xAxis: 20.9, yAxis: 120 },
{ date: '11.10.2000', xAxis: 35.1, yAxis: 121 },
{ date: '12.10.2000', xAxis: 21.2, yAxis: 109 },
{ date: '13.10.2000', xAxis: 28.4, yAxis: 119 },
{ date: '14.10.2000', xAxis: 24.4, yAxis: 121 }
];
var init = {
xMin: data[0].xAxis,
xMax: data[0].xAxis,
yMin: data[0].yAxis,
yMax: data[0].yAxis
};
var result = data.reduce(function(previtem, curritem) {
if (previtem.xMin > curritem.xAxis) previtem.xMin = curritem.xAxis;
if (previtem.xMax < curritem.xAxis) previtem.xMax = curritem.xAxis;
if (previtem.yMin > curritem.yAxis) previtem.yMin = curritem.yAxis;
if (previtem.yMax < curritem.yAxis) previtem.yMax = curritem.yAxis;
return previtem;
}, init);
console.log(result);
// { xMin: 20.9, xMax: 35.1, yMin: 109, yMax: 121 }
这篇关于如何在 JavaScript 中同时检查最小值和最大值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!