Anteponer texto al principio de la cadena

3 minutos de lectura

avatar de usuario
compañero64

¿Cuál es el método más rápido para agregar un nuevo valor al comienzo de una cadena?

Dado que la pregunta es acerca de cuál es el lo más rápido método, pensé en agregar algunas métricas de rendimiento.

TL;DR El ganador, por un amplio margen, es el + operador, y por favor nunca use expresiones regulares

https://jsperf.com/prepend-text-to-string/1

ingrese la descripción de la imagen aquí

  • Ya que queremos probar anteponery no solo concatenar, actualicé las pruebas: jsperf.com/prepend-text-to-string/5

    – metalim

    22 de abril de 2019 a las 11:32

  • @metalim, ¿hubo algún cambio importante en el material que hiciste en las pruebas? Un prefijo es solo la mitad ordenada de la concatenación de cadenas. Además, para jsPerf, no necesita lanzar los casos de prueba en un bucle; jsPerf llama a cada método miles de veces para obtener una línea base de puntajes. Las pruebas de rendimiento optimizan escenarios particulares, y no estoy seguro de qué tan común es anteponer la misma cadena 1000 veces.

    – KyleMit

    22 de abril de 2019 a las 18:08

  • Puede haber una diferencia significativa si agrega una cadena corta a una larga o una cadena larga a una corta. Ya que estamos interesados ​​en anteponiendo cadena corta a cadena arbitraria, eso es lo que se hace en las pruebas: anteponer cadena corta a cadena más larga creciente. Los bucles están ahí para probar 1000 longitudes diferentes de la cadena de sufijos, para evitar probar solo cortos o largos. @KyleMit, si tiene una mejor idea, siéntase libre de implementarla en la próxima iteración de prueba.

    – metalim

    23 de abril de 2019 a las 8:38


  • Estoy tentado a votar esto por la tira xkcd. ¡Buena cosa! Su solución elegante probablemente sea más lenta porque instancia el procesador de expresiones regulares.

    – Rolf

    10 de noviembre de 2017 a las 0:40


  • @Rolf probablemente no. Está ciertamente más lento que el prestring + 'original string'; solución.

    – Gabriele Petrioli

    10 de noviembre de 2017 a las 7:17


  • @GabrielePetrioli La ventaja es que solo puede agregar a su cadena de puntos (tubería). Incluso puede agregar algo, como mystr.replace (/$/,’ por Gabriele’). Puede que sea más lento, pero es exactamente lo que estaba buscando.

    – Mateja Petrovic

    9 de agosto de 2018 a las 0:23

  • Quizás este debería ser el nuevo estándar: cada publicación también debe incluir XKCD relevante.

    – HaulinOats

    12/09/2018 a las 20:33

  • por alguna razón, pensé que la computadora en el escritorio era en realidad un bebé en un moisés, y también pensé que era extraño que el tipo golpeara al bebé.

    – thedanotto

    29 de marzo de 2019 a las 20:08

avatar de usuario
Ilan Schemoul

Si desea usar la versión de Javascript llamada ES 2015 (también conocido como ES6) o posterior, puede usar cadenas de plantilla introducido por ES 2015 y recomendado por algunas pautas (como Guía de estilo de Airbnb):

const after = "test";
const mystr = `This is: ${after}`;

avatar de usuario
Griffi

ES6:

let after="something after";
let text = `before text ${after}`;

avatar de usuario
hjpotter92

también podrías hacerlo de esta manera

"".concat("x","y")

  • y por qué no “x”.concat(“y”)? ¿Solo para agregar otra instanciación de cadena y hacerlo más lento?

    – metalim

    22 de abril de 2019 a las 11:31

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad