zoukankan      html  css  js  c++  java
  • 前端面试题手记

    数组去重

    题目

    // 输入数据
    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);
    
  • 相关阅读:
    java 线程的终止与线程中断
    java 线程协作 wait(等待)与 notiy(通知)
    java 线程协作 yield()
    java 线程协作 join()
    python学习 文件操作
    linux 学习 常用命令
    linux 学习 设置固定网Ip
    web 安全
    MySQL数据物理备份之tar打包备份
    MySQL数据物理备份之lvm快照
  • 原文地址:https://www.cnblogs.com/aaron---blog/p/10837307.html
Copyright © 2011-2022 走看看