Pase la función con un argumento a array.map usando jsfuck

Aug 27 2020

Quiero convertir el siguiente código (ignorar console.log) a la convención jsfuck donde solo []()!+se permiten caracteres (pero aquí para mayor claridad también se permiten números y cadenas con caracteres aZ y 0-9 (entre comillas dobles), porque la conversión tales cadenas / números a []()!+es fácil)

console.log(
    [1,2,3,4,5].map(x=>x**2)
)

Después de la conversión parcial tengo

console.log(
    [1,2,3,4,5]["map"]([]["fill"]["constructor"]("return(2)"))
)

El problema es que no puedo pasar un argumento xa la función del mapa.

Pregunta : ¿Cómo convertir la función x=>x**2a jsf y pasarla como mapargumento?

(No quiero usar 'eval' como soluciones en las que colocamos una mapcadena dentro que se ejecutará como código, por ejemplo []["fill"]["constructor"]('return [1,2,3,4,5].map(x=>x**2)')(), esto está prohibido)

Respuestas

1 JonasWilms Aug 27 2020 at 14:36

El constructor de la función toma más de un argumento:

 []["fill"]["constructor"]('x', 'return x ** 2;')
KamilKiełczewski Sep 01 2020 at 18:59

Solución alternativa: también permite definir métodos de varios argumentos

console.log(
  [1,2,3,4,5].map( 
    []["fill"]["constructor"]('return x=>x**2')()
  )
)