数组去重
题目
// 输入数据
const input = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]
// 输出数据
expect = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
// 附加条件 最好不要超过五行
正确答案
// 第一种
const ary = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10]
console.log('ary', [... new Set(ary.flat(Infinity))].sort((a, b) => a - b))
// 第二种
const flatten = input => {
result = []
input.forEach(v => Array.isArray(v) ? result = result.concat(flatten(v)) : result.push(v))
return result
}
// 第三种
const flatten = input => input.reduce((prev, next) => prev.concat(Array.isArray(next) ? flatten(next) : next), []);
// 第四种
const flatten = input => {
while(input.some(v => Array.isArray(v))){
input = [].concat(...input)
}
return input
}
地狱回调
function fn1 (name){
console.log(1)
return name;
}
function fn2 (name){
console.log(2)
return name;
}
function fn3 (name){
console.log(3)
return name;
}
function reduces (...fns){
if(!fns.length){
return arg => arg;
}
if(fns.length === 1){
return fns[0];
}
return fns.reduce((currentFn,nextFn) => (...arg) => currentFn(nextFn(...arg)));
}
let abc = reduces(fn1,fn2,fn3)("欧米伽");
console.log(abc);