Js 如何找到一个二维坐标系中所有极值点(最大值和最小值)
时间: 2024-11-04 17:10:56 浏览: 17
二维坐标系下求极大值
在JavaScript中寻找二维数组(通常视为网格或矩阵)中的所有极值点(最大值和最小值),你可以通过遍历整个数组并比较每个元素的值来实现。以下是一个简单的步骤说明:
1. **初始化变量**:创建两个变量分别存储当前找到的最大值 `maxVal` 和最小值 `minVal`,以及它们的对应位置 `maxCoord` 和 `minCoord`。
2. **遍历数组**:使用嵌套循环遍历二维数组的每一个元素 `(row, col)`。
```javascript
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j++) {
// ...
}
}
```
3. **比较元素**:对于当前元素,检查它是否大于 `maxVal` 或小于 `minVal`。如果是,则更新这两个值及其坐标。
```javascript
if (arr[i][j] > maxVal) {
maxVal = arr[i][j];
maxCoord = { row: i, col: j };
} else if (arr[i][j] < minVal) {
minVal = arr[i][j];
minCoord = { row: i, col: j };
}
```
4. **结束遍历后返回结果**:当遍历结束后,`maxCoord` 和 `minCoord` 将包含数组中的最大值和最小值坐标。
完整示例代码如下:
```javascript
function findMinMax(arr) {
let maxVal = -Infinity;
let minVal = Infinity;
let maxCoord = { row: null, col: null };
let minCoord = { row: null, col: null };
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j++) {
if (arr[i][j] > maxVal) {
maxVal = arr[i][j];
maxCoord = { row: i, col: j };
} else if (arr[i][j] < minVal) {
minVal = arr[i][j];
minCoord = { row: i, col: j };
}
}
}
return {
maxValue: maxVal,
maxValueCoord: maxCoord,
minValue: minVal,
minValueCoord: minCoord
};
}
// 使用示例
const grid = [[1, 5, 3], [4, 2, 8], [7, 6, 9]];
const result = findMinMax(grid);
console.log(result);
```
阅读全文