У меня есть массив в javascript с этой структурой:
controllers: Array(2)
0: Object
vram: 4095
1: Object
vram: 1024
Этот массив создается через si.graphics. Могут быть больше под-массивов с разными значениями.
Мне нужно как-то вернуть только индекс контроллера с наибольшим количеством vram. Я нашел другие вопросы о стеке о чем-то подобном, но, похоже, только с плоскими массивами, но этот массив многомерен.
Я не очень многого добился, потому что я просто не знаю, с чего начать.
Как я могу получить индекс sub-массива с наибольшим количеством vram?
Это не дубликат, потому что он фокусируется на получении самого высокого значения, которое довольно тривиально и не является тем, что я/просил.
Вы можете уменьшить массив, проверив значение и со значением последнего максимального значения.
var controllers = [{ vram: 4095 }, { vram: 1024 }],
maxIndex = controllers.reduce(
(r, { vram }, i, a) => !i || vram > a[r].vram ? i : r,
undefined
);
console.log(maxIndex);
Просто повторите операцию controllers
объектами 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
Используйте что-то вроде ниже
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);
the index of the sub-array with the most vram
означает, что ему нужен максимальный vram
и его ключ! @Luca
Если вы просто пытаетесь получить самое высокое значение, следующая функция в фрагменте кода сделает то, что вам нужно:
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);