arr = ['1', '2', '3', '4', '+', '-', '*', '5', '6'] operatorsValue = ['+', '-', '*', '/', '%'] operatorPosition = arr.findIndex((x) => operatorsValue.includes(x));Usando operatorPosition puedo encontrar el índice de '+' pero quiero encontrar el operador de '*' en el arr.
No hay un método findLastIndex en las matrices. Simplemente recorra la matriz hacia atrás en busca de una coincidencia:
let operatorPosition; for (let i = arr.length - 1; i >= 0; --i) { if (operatorsValue.includes(arr[i])) { operatorPosition = i; break; } }Puede usar array#reduce y array#indexOf para crear un objeto con los índices de todos los operadores de la matriz.
let oprObject = operatorsValue.reduce((acc, opr) => { acc[opr] = arr.indexOf(opr) return acc }, {})Manifestación:
arr = ['1', '2', '3', '4', '+', '-', '*', '5', '6'] operatorsValue = ['+', '-', '*', '/', '%'] let oprObject = operatorsValue.reduce((acc, opr) => { acc[opr] = arr.indexOf(opr) return acc }, {}) console.log(oprObject) console.log("+ is at index:", oprObject["+"]) console.log("* is at index:", oprObject["*"])Calcule el último índice para cada operador y tome el máximo de ellos:
arr = ['1', '2', '3', '4', '+', '-', '*', '5', '6'] operatorsValue = ['+', '-', '*', '/', '%'] lastOperatorPosition = Math.max(...operatorsValue.map(op => arr.lastIndexOf(op))) console.log(lastOperatorPosition)