Sort an array according other array

I am trying to sort an array according other array. More specifically, sort ε_ according Z.

NN = 6
Z = rand(NN)
ε_= rand(NN)
teste = [ Z[sortperm(Z)] ε_[sortperm(ε_)] ]
test_f(Z) = teste[teste[:,1] .== Z , 2]
ε_ = test_f.(Z)

I believe there is a solution in fewer lines.

first.(sort(collect(zip(ε_,Z)),by=last))

You mean?

ε_ .= ε_[sortperm(Z)]

No. It is the same that

ε_[ sortperm(Z) , :]

But my goal is different. You can run my script and will see that it is not the same goal.

No. my goal is different. You can run my script and will see that it is not the same goal.

Picking easier to read random things, I think this is a less convoluted way to get the same answer:

julia> Z = rand(Int8, 6); println(Z)
Int8[68, -64, -110, 95, -116, 81]

julia> ε_ = rand('a':'z', 6); println(ε_)
['i', 'b', 'u', 'k', 'v', 'j']

julia> teste = [ Z[sortperm(Z)] ε_[sortperm(ε_)] ]
6×2 Matrix{Any}:
 -116  'b'
 -110  'i'
  -64  'j'
   68  'k'
   81  'u'
   95  'v'

julia> test_f(Z) = teste[teste[:,1] .== Z , 2]
test_f (generic function with 1 method)

julia> test_f.(Z)  # desired result?
6-element Vector{Vector{Any}}:
 ['k']
 ['j']
 ['i']
 ['v']
 ['b']
 ['u']

julia> ε_[sortperm(Z)] |> println  # "sort an array according other array"
['v', 'u', 'b', 'i', 'j', 'k']

julia> sort(ε_)[invperm(sortperm(Z))] |> println  # more direct way?
['k', 'j', 'i', 'v', 'b', 'u']

Similar result but different output array type, just in case:

test_f2(Z) = teste[indexin(Z,teste[:,1]),2]
test_f2(Z)

6-element Vector{Any}:
 'k': ASCII/Unicode U+006B (category Ll: Letter, lowercase)
 'j': ASCII/Unicode U+006A (category Ll: Letter, lowercase)
 'i': ASCII/Unicode U+0069 (category Ll: Letter, lowercase)
 'v': ASCII/Unicode U+0076 (category Ll: Letter, lowercase)
 'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)
 'u': ASCII/Unicode U+0075 (category Ll: Letter, lowercase)