我在这个结构的javascript中有一个数组:
controllers: Array(2)
0: Object
vram: 4095
1: Object
vram: 1024
此数组是通过si.graphics生成的。可以有更多具有不同值的子阵列。
我需要以某种方式返回具有最大vram的控制器的索引。我发现了其他关于类似东西的堆栈问题,但看起来只有扁平数组,但这个数组是多维的。
我没有尝试过很多事情,因为我根本不知道从哪里开始。
如何获得具有最大vram的子数组的索引?
This并不重复,因为它专注于获取最高价值,这非常微不足道,而不是我所要求的。
答案 0 :(得分:1)
使用以下内容
var controllers = {
0: {
vram: 4096
},
1: {
vram: 1024
},
2: {
vram: 1024
}
};
var max = -999999,
maxKey = -1;
for(var key in controllers) {
if(controllers[key]['vram'] > max) {
max = controllers[key]['vram'];
maxKey = key;
}
}
console.log(maxKey);
console.log(max);

答案 1 :(得分:1)
如果您只是想获得最高价值,那么代码段中的以下函数将满足您的需求:
const myArray = [
{vram: 100},
{vram: 200},
{vram: 150}
]
function getHighestVram(array){
let highestVram = 0;
for (i in array){
if(array[i].vram > highestVram) {
highestVram = array[i].vram;
}
}
return highestVram;
}
const maxVram = getHighestVram(myArray);
console.log(maxVram);

如果要查找具有最高vram的索引,可以使用类似的功能。像这样:
const myArray = [
{vram: 100},
{vram: 200},
{vram: 150}
]
function getHighestVram(array){
let highestVram = 0;
let highestVramIndex;
for (i in array){
if(array[i].vram > highestVram) {
highestVram = array[i].vram;
highestVramIndex = i;
}
}
return highestVramIndex;
}
const maxVramIndex = getHighestVram(myArray);
console.log(maxVramIndex);

答案 2 :(得分:1)
您可以通过检查值和最后一个最大值的值来减少数组。
var controllers = [{ vram: 4095 }, { vram: 1024 }],
maxIndex = controllers.reduce(
(r, { vram }, i, a) => !i || vram > a[r].vram ? i : r,
undefined
);
console.log(maxIndex);
答案 3 :(得分:1)
只需迭代controllers
对象,并检查每个vram
值,始终存储最高值,就可以了。
let controllers = [
{"vram":4095}, // index 0
{"vram":1024}, // index 1
{"vram":55555}, // index 2
{"vram":123} // index 3...
];
let max = 0;
for(let i in controllers){
if(controllers[i].vram > controllers[max].vram ) max = i
}
console.log(max); // outputs 2