js用一次循环找到数组中两个最大的值
时间: 2024-04-29 17:23:59 浏览: 21
以下是使用一次循环找到数组中两个最大值的JavaScript代码:
```
function findTwoMaxValues(arr) {
let max1 = arr[0];
let max2 = arr[1];
if (max2 > max1) {
[max1, max2] = [max2, max1];
}
for (let i = 2; i < arr.length; i++) {
if (arr[i] > max1) {
max2 = max1;
max1 = arr[i];
} else if (arr[i] > max2) {
max2 = arr[i];
}
}
return [max1, max2];
}
// Example usage:
const arr = [5, 3, 9, 1, 7, 4, 8, 2, 6];
const [max1, max2] = findTwoMaxValues(arr);
console.log(max1, max2); // Output: 9 8
```
该函数首先初始化两个变量max1和max2,并将它们设置为数组的前两个元素。然后,如果max2比max1大,它们将被交换。接下来,函数遍历数组中的每个元素,如果元素大于max1,则max1将被更新为该元素,同时将max2更新为旧的max1值。如果元素介于max1和max2之间,则只更新max2。最后,函数返回一个包含两个最大值的数组。
相关问题
JS帮我写判断两个数组中其中一个值相等
可以使用双重循环来遍历这两个数组,找到第一个相等的值即可。代码如下:
```javascript
function findEqualValue(arr1, arr2) {
for (let i = 0; i < arr1.length; i++) {
for (let j = 0; j < arr2.length; j++) {
if (arr1[i] === arr2[j]) {
return arr1[i];
}
}
}
return null;
}
```
这个函数接受两个参数,分别是需要进行比较的两个数组。函数会返回这两个数组中第一个相等的值,如果没有相等的值则返回null。
react 循环过滤两个数组对象中相同字段值
可以使用嵌套的循环来实现循环过滤两个数组对象中相同字段值的对象。
假设有两个数组 arr1 和 arr2,它们的对象都有一个字段叫做 "id",我们要循环遍历两个数组,找到在 arr1 中存在的对象:
```javascript
const arr1 = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
];
const arr2 = [
{ id: 2, age: 20 },
{ id: 4, age: 25 },
{ id: 1, age: 30 }
];
const filteredArr = [];
for (let i = 0; i < arr1.length; i++) {
for (let j = 0; j < arr2.length; j++) {
if (arr1[i].id === arr2[j].id) {
filteredArr.push(arr2[j]);
break;
}
}
}
console.log(filteredArr);
// Output: [{ id: 2, age: 20 }, { id: 1, age: 30 }]
```
在上面的代码中,我们使用了两层循环来遍历 arr1 和 arr2,对于每个 arr1 中的对象,都在 arr2 中寻找是否存在相同的 id 值的对象。如果找到了,就把该对象 push 到 filteredArr 中,并结束当前的循环(使用 break 语句)。最终返回的结果是 [{ id: 2, age: 20 }, { id: 1, age: 30 }],它们的 id 分别是 2 和 1,都存在于 arr1 中。