Hice una pregunta similar aquí TypeScript: ¿Cómo reemplazar un número particular en una cadena y luego actualizar su valor?
Realmente aprecio las respuestas allí. Respondió a mis preguntas.
Me encontré con un nuevo problema. Pensé que era más útil plantear una nueva pregunta al referirse a la pregunta anterior.
Tengo una columna que está llena de cadenas de 10 dígitos.
A veces, los 10 dígitos completos solo contienen valores numéricos (por ejemplo, 3345678901 ), pero a veces se incluye un guión (por ejemplo 3345678--- )
Me gustaría poder:
Ejemplo 1 (todo numérico): 3345678901
683345878901 Ejemplo 2 (numérico y no numérico): 3345678---
683345878--- Ejemplo 3 (numérico y no numérico): 3345678---
-233458782--Para el ejemplo 1, sé que podría hacer lo siguiente (como ha señalado un colaborador de la publicación OG):
const givenStr = "3345678901"; let givenStrArray = givenStr.split('').map(Number); const inputIndex = 4; const increaseAmount = 2; givenStrNumber += increaseAmount console.log(givenStrNumber); Pero, ¿cómo hago para los Ejemplos 2 y 3? ¿Ya que hay una cadena '-' involucrada? En este caso, map(Number) conduciría a valores nulos que romperían el código.
¡Cualquier ayuda sería muy apreciada!
Compruebe NaN . Este es un pequeño fragmento que le daría una pista:
// ... // ... const increment = 2; let givenStrArray = givenStr .split('') .map((digiit) => isNaN(digit) ? increment : Number(digit + increment); // ... // ...Esto debería funcionar
let str = '3345678---' let NumericStrArray = str.split('').map(x => Number.isNaN(Number(x)) ? x: Number(x)) let ipIndex = 7 let incAmount = 2 let val = NumericStrArray[ipIndex] NumericStrArray[ipIndex] = typeof val === 'string' ? incAmount : val + incAmount let result = NumericStrArray.join('')Aquí hay un pequeño fragmento simple. Separe la picadura, mapee cada elemento, cuando encontremos el índice que necesitamos actualizar, lo actualizamos y lo devolvemos, luego los unimos todos nuevamente.
Aquí se han utilizado operadores ternarios condicionales múltiples, puede obtener más información sobre cómo funcionan aquí: Operador condicional (ternario)
const givenStr = "334567----", inputIndex = 6, increaseAmount = 2 let givenNumber = givenStr .split('') .map((v,i) => i === inputIndex ? isNaN(v) ? increaseAmount : +v + increaseAmount : v) .join('') console.log(givenNumber);