const arr = [2, 3, 4]
const num = 2
// const num = 432
function f(num, arr) {
arr.sort((a, b) => a - b)
num = num + ''
const res = []
for (let k = 0; k < num.length; k++) {
let big = -1
for (let i = 0; i < arr.length; i++) {
if (k == num.length - 1 && arr[i] == num[k]) {
big = i - 1
break
} else if (arr[i] == num[k]) {
big = i
break
}
}
if (big == -1) {
res.length && res[res.length - 1]--
while (res.length && res[res.length - 1] == -1) {
res.pop()
res[res.length - 1]--
}
if (res.length == 0) return String(arr[arr.length - 1]).repeat(num.length - 1)
let r = ''
for (let i = 0; i < res.length; i++) {
r += arr[res[i]]
}
return r + String(arr[arr.length - 1]).repeat(num.length - r.length)
} else {
res.push(big)
}
}
let r = ''
for (let i = 0; i < res.length; i++) {
r += arr[res[i]]
}
return r
}
console.log(f(num, arr))
// String(arr[arr.length-1]).repeat(num.length-1)
console