You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取JavaScript对象数组中VRAM值最大的控制器索引

找到VRAM值最大的控制器索引

嘿,这个问题其实很好解决,咱们可以用JavaScript数组的原生方法轻松处理对象数组的极值查找,这里给你两种实用的方案:

方案一:使用reduce(高效推荐)

reduce方法非常适合这种需要遍历数组并累积结果的场景,只需要一次遍历就能搞定,效率很高:

// 你的控制器数组
const controllers = si.graphics.controllers;

// 处理空数组的边界情况(可选,根据你的实际场景调整)
if (controllers.length === 0) {
  console.log("没有控制器数据");
  return;
}

// 找到vram最大的元素索引
const maxVramIndex = controllers.reduce((currentMaxIndex, currentItem, currentIndex) => {
  // 对比当前元素的vram和记录的最大vram
  return currentItem.vram > controllers[currentMaxIndex].vram 
    ? currentIndex 
    : currentMaxIndex;
}, 0); // 初始默认第一个元素为当前最大值

console.log("VRAM最大的控制器索引:", maxVramIndex);

代码解释:

  • reduce的回调函数会遍历数组中的每一个元素,每次对比当前元素的vram和当前记录的最大索引对应的vram值。
  • 如果当前元素的vram更大,就把当前索引更新为新的最大索引;否则保持原来的索引。
  • 初始值设为0,也就是默认第一个元素是当前最大值,之后逐步迭代比较。

方案二:使用map + Math.max(更直观)

如果你觉得reduce有点绕,也可以用更直观的方式,先提取所有vram值,再找最大值对应的索引:

const controllers = si.graphics.controllers;

if (controllers.length === 0) {
  console.log("没有控制器数据");
  return;
}

// 提取所有vram值组成数组
const allVramValues = controllers.map(controller => controller.vram);
// 找到最大的vram值
const maxVram = Math.max(...allVramValues);
// 找到最大值对应的索引
const maxVramIndex = allVramValues.indexOf(maxVram);

console.log("VRAM最大的控制器索引:", maxVramIndex);

注意点:

  • 这种方法需要遍历两次数组(一次map,一次indexOf),如果你的数组非常大,效率会比reduce稍低一点。
  • 如果有多个控制器的vram值都是最大值,indexOf会返回第一个出现的那个索引,和reduce方案的结果一致。

两种方案都能完美解决你的问题,根据你的代码风格和实际场景选就行~

内容的提问来源于stack exchange,提问作者GrumpyCrouton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:10:05