SOURCE

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 命令行工具 X clear

                    
>
console