Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

142
Visualizações
¿Problema de valor de retorno de reemplazo de Javascript JSON.stringify?

Traté de escribir un código javascript que se multiplica con el número de salarios de cada persona y los convierte en una cadena con JSON.stringify.

Por ejemplo, en sueldos , el nombre y el sueldo original están aquí así:

 let salaries = { james:100000, john:200000, jane:300000 };

y quiero expresar así: {james:110000,john:220000,jane:330000}

Entonces, escribí el código como...

 let payjson = JSON.stringify(pays, function replacer(key, value){ return value*1.1; }); // 1st try

y obtuve un error, los valores se cambiaron como [objeto Objeto], NaN.

Sin embargo, este código simplemente funcionó para mí.

 let payjson = JSON.stringify(pays, function replacer(key, value){ return Number.isInteger(value)? Math.floor(value*1.1): value; }); // 2nd try

Me pregunto por qué el primero no funcionó como yo quería y el segundo simplemente funcionó como yo quería.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Como explica claramente la documentación de la función stringify(), la función de reemplazo se pasa inicialmente al objeto y luego a cada una de las propiedades. Entonces, estás viendo este comportamiento. La primera vez que el valor entra como tipo de object y se intenta la multiplicación, falla y posteriormente no pasa las propiedades, por lo que el retorno general de stringify() es nulo. En su código de segundo intento, está verificando el value y solo si es de numeric type , está haciendo los cálculos y devolviendo un valor calculado, que stringify() usa para agregar a la cadena de salida.

Ver la documentación , y principalmente este párrafo:

Inicialmente, la función de reemplazo se llama con una cadena vacía como clave que representa el objeto que se está encadenando. Luego se llama para cada propiedad en el objeto o matriz que se está encadenando.

about 4 years ago · Juan Pablo Isaza Relatório

0

Parece que desea crear una copia del objeto original con salarios un 10% más altos:

 const salaries = { james:100000, john:200000, jane:300000 }; const res=Object.fromEntries(Object.entries(salaries).map(([k,v])=>[k,1.1*v])); console.log(res); // this can be strigified too: console.log(JSON.stringify(res)); // and the input object is unchanged: console.log(salaries);

about 4 years ago · Juan Pablo Isaza Relatório

0

Cuando se llama por primera vez a la función de replacer , a key se le asigna una cadena vacía. Sin embargo, aún se espera que la función devuelva value , de lo contrario, termina.

 let salaries = { james:100000, john:200000, jane:300000 }; document.write(JSON.stringify(salaries,(k,v)=>{return k==''?v:Math.floor(v*1.1);}));

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda