let arr = [[1, 2, 3], [4, 4, 5], [6, 7, 8, [9, 10, [11, 12]]], ];
arr = arr.flat(Infinity);
arr = arr.toString().split(',').map(item => parseFloat(item));
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
};
function wrap() {
let ret = [];
return function flat(arr) {
for (let item of arr) {
if (item.constructor === Array) {
ret.concat(flat(item));
} else {
ret.push(item);
}
}
return ret;
}
}
function wrap(arr) {
let ret = [];
ret = Array.from(new Set(arr.flat(Infinity)));
return ret;
}
function formArray(arr) {
const sortedArr = Array.from(new Set(arr)).sort((a, b) => a - b);
const map = new Map();
debugger;
sortedArr.forEach((v) => {
const key = Math.floor(v / 10);
const group = map.get(key) || [];
group.push(v);
map.set(key, group);
});
return [...map.values()];
}
function rotate(arr, k) {
const len = arr.length;
const step = k % len;
return arr.slice(-step).concat(arr.slice(0, len - step));
}
function zeroMove(array) {
let len = array.length;
let j = 0;
for (let i = 0; i < len - j; i++) {
if (array[i] === 0) {
array.push(0);
array.splice(i, 1);
i--;
j++;
}
}
return array;
}
function currying(fn, length) {
length = length || fn.length;
return function(...args) {
return args.length >= length ? fn.apply(this, args) : currying(fn.bind(this, ...args), length - args.length);
}
}
function fun(num) {
let num1 = num / 10;
let num2 = num % 10;
if (num1 < 1) {
return num;
} else {
num1 = Math.floor(num1);
return`${num2}${fun(num1)}`;
}
}