Passe a função com um argumento para array.map usando jsfuck

Aug 27 2020

Eu quero converter o seguinte código (ignorar console.log) para a convenção jsfuck onde apenas caracteres []()!+são permitidos (mas aqui para maior clareza também números e strings com aZ e 0-9 caracteres são permitidos (envoltos por aspas duplas) - porque a conversão de tais strings / números para []()!+é fácil)

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

Após a conversão parcial, tenho

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

O problema é que não consigo passar o argumento xpara a função do mapa.

Descrição : Como converter uma função x=>x**2em jsf e passá-la como mapargumento?

(Não quero usar 'eval' como soluções onde colocamos mapdentro de uma string que será executada como código, por exemplo []["fill"]["constructor"]('return [1,2,3,4,5].map(x=>x**2)')()- isso é proibido)

Respostas

1 JonasWilms Aug 27 2020 at 14:36

O construtor da função tem mais de um argumento:

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

Solução alternativa - também permite definir métodos multi-arg

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