UNPKG

arrrepeat

Version:

传入一个数或多个返回有多少种排序方式和结果

42 lines (40 loc) 1.11 kB
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}`) // })