Tengo una lista de objetos para almacenar índices así:
const initialIndexes = { 0: [0,1,2], 1: [0,1] } En este punto tengo una variable ResultIndex highlightedResultIndex . Da un índice como este:
highlightedResultIndex = 0 - case 1 highlightedResultIndex = 4 - case 2 highlightedResultIndex = 2 - case 3 ... Y finalmente trato de obtener los siguientes resultados highlightedResultIndex
For the case 1: result = { 0: 0, // index from initialIndexes 1: -1 } For the case 2: result = { 0: -1, 1: 1 // index from initialIndexes } For the case 3: result = { 0: 2 // index from initialIndexes 1: -1 }Tal vez haya un método fácil o un cierto algoritmo para esto, pero no sabía cómo investigarlo, así que quería escribirlo aquí. Me alegraría si me ayudas.
EDITAR:
Permítanme poner aquí algunos de los ejemplos
// This is data from the server side. const initialIndexes = { 0: [0,1,2,3], 1: [0,1,2], 2: [0,1,2], 3: [0,1,2,3,4] } // So, I need to index object like this by highlightedResultIndex variable // highlightedResultIndex = 0 { 0:0, 1:-1, 2:-1, 3:-1 } // highlightedResultIndex = 6 { 0: -1, 1:2, 2:-1, 3:-1 } // highlightedResultIndex = 10 { 0: -1, 1:-1, 2:-1, 3:0 }Puede tomar el valor del índice deseado y reducirlo por la longitud de las matrices hasta que encaje en una matriz.
const initialIndexes = { 0: [0, 1, 2, 3], 1: [0, 1, 2], 2: [0, 1, 2], 3: [0, 1, 2, 3, 4] }, getIndices = n => Object.fromEntries(Object .entries(initialIndexes) .map(([key, array]) => { const value = n >= 0 && n < array.length ? array[n] // or just n : -1; n -= array.length; return [key, value]; }) ); console.log(getIndices(0)); // { 0: 0, 1: -1, 2: -1, 3: -1 } console.log(getIndices(6)); // { 0: -1, 1: 2, 2: -1, 3: -1 } console.log(getIndices(10)); // { 0: -1, 1: -1, 2: -1, 3: 0 } .as-console-wrapper { max-height: 100% !important; top: 0; }