An algorithm to find the permutation of a string in JavaScript.

/**
 * Find the permutations of the given string.
 * @param s The input string
 *
 * Algorithm:
 * 1. If the length of the string is 1, return the string as permutation of 'a' is 'a'
 * 2. Else for the given string find the last character char and the substring by stripping the last char
 *    2.1 Recurse with the substring
 * 3. For each permutation from step 2 add the char to each position of the substring and return
 */
function permute(s) {
    var len = s.length, char, i = 0, j = 0, p = [], elem, pArr = [], plen = 0;
     
    if (len == 1) return s;
     
    char = s.charAt(len-1);
    pArr = permute(s.substring(0, len-1));
    plen = pArr.length;
 
    for (i = 0; i < plen; i++) {
        for (j = 0; j < len; j++) {
            elem = pArr[i].split("");
            elem.splice(j, 0, char);
            p.push(elem.join(""));
        }
    }
    return [...new Set(p)];
}
permute("abc"); // [ 'cba', 'bca', 'bac', 'cab', 'acb', 'abc' ]

Adapted from python version by GodComplex2.