gpt4 book ai didi

javascript - 如何在 JavaScript 中同时检查最小值和最大值?

转载 作者:行者123 更新时间:2023-11-28 00:17:02 25 4
gpt4 key购买 nike

我不确定我的理解是否正确:检索数据比对该数据运行逻辑操作慢得多。所以,而不是:

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)有任何性能优势吗?

感谢您的解释。

示例数据:

[
{ 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 }
]

最佳答案

您可以使用Array.reduce一次性计算所有四个值:

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 - 如何在 JavaScript 中同时检查最小值和最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30374180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com