arrrepeat
Version:
传入一个数或多个返回有多少种排序方式和结果
42 lines (40 loc) • 1.11 kB
JavaScript
class ArrRepeat {
constructor(num) {
this._arr = (String(num)).split('');
this.init();
}
init() {
this._arr = this.endArr(this.perm(this._arr))
}
perm(arr) {
let newArr = [];
(function fn(source, res) {
if (source.length == 0) {
newArr.push(res);
} else {
source.forEach((item, index) => {
fn(source.slice(0, index).concat(source.slice(index + 1)), res.concat(source[index]));
})
}
})(arr, []);
return newArr;
}
endArr(arr) {
let result = [];
let hash = {};
arr.forEach((item, index) => {
if (!hash[item]) {
result.push(item);
hash[item] = true;
}
})
return result
}
}
module.exports = function(num) {
return new ArrRepeat(num)._arr;
}
// var num = 131419;
// arrRepeat(num).forEach(function (item, index) {
// console.log(`第${index + 1}种情况,结果为${item}`)
// })