решение последней задачи
function digitPermutation(nums) {
var groups = new Map;
for (var i = 0, l = nums.length; i < l; i++) {
var num = nums[i];
var n = num;
var mask = 0;
var length = 0;
while (n > 0) {
var digit = n % 10;
mask |= (1 << digit);
n = (n / 10) | 0;
length++;
}
var key = (length << 16) | mask;
var group = groups.get(key);
!group ? groups.set(key, [num]) : group.push(num);
}
return Array.from(groups.values());
}
console.log(digitPermutation([123, 321, 456, 654, 112, 12, 0, 0, 1, 1]));
console.log(digitPermutation([1, 11, 111, 2, 22]));
console.log(digitPermutation([0, 10, 100]));