1.请用一行代码实现数组扁平化?
1 /** 2 3 * 数组扁平化(方式一) 4 5 * @param {Array} arr 数组 6 7 */ 8 9 function flat1 (arr) { 10 11 return [].concat(...arr.map(v => Array.isArray(v) ? flat1(v) : v)) 12 13 } 14 15 /** 16 17 * 数组扁平化(方式二) 18 19 * @param {Array} arr 数组 20 21 */ 22 23 function flat2 (arr) { 24 25 return arr.flat(Infinity) 26 27 }
2.请在不使用Set的情况下实现数组去重?
1 /** 2 3 * 数组去重复 4 5 * @param arr {Array} 数组 6 7 */ 8 9 function unique(arr){ 10 11 return arr.filter((v, i) => Object.is(i, arr.indexOf(v))) 12 13 }
3.计算一个字符串中出现重复字符的个数(不区分大小写)?
1 /** 2 3 * 出现重复字符的个数 4 5 * @param {String} text 字符串 6 7 */ 8 9 function duplicateCount (text) { 10 11 return (text.toLowerCase().split('').sort().join('').match(/(.)1+/g) || []).length 12 13 }
4.已知DNA是双链结构,由4种碱基对构成,A和T互相配对,C和G互相配对,若有任意一条DNA单链,求配对的单链?
1 function DNAResolve (dna) { 2 3 return dna.replace(/(A|T|C|G)/gi, function($1){ 4 5 return { 6 7 A: 'T', 8 9 T: 'A', 10 11 C: 'G', 12 13 G: 'C' 14 15 }[$1] 16 17 }) 18 19 }
5.写一个将字符串转驼峰式的函数
1 function camelCase (str) { 2 3 return str.split(' ').map(v => v.replace(/(w)/g, function (fl) { 4 5 return fl.toUpperCase() 6 7 })).join('') 8 9 } 10 11 camelCase('hello world') // 'HelloWorld'
6.求泰波那契数列
已知斐波那契数列规律为[1, 1, 2, 3, 5...], 而泰波那契数列是从第4个元素开始,后面每个元素都是前3个元素之和,请写一个有2个参数的函数,参数1是初始化数组,参数2是该函数返回泰波那契数组的长度,返回值是泰波那契数列。
1 function tribonacci(signature,n){ 2 3 for (var i = 0; i < n-3; i++) { 4 5 signature.push(signature[i] + signature[i+1] + signature[i+2]); 6 7 } 8 9 return signature.slice(0, n); 10 11 } 12 13 tribonacci([1,1,1],1) // [1] 14 15 tribonacci([0,2,7],2) // [0, 2] 16 17 tribonacci([1,1,1],10) // [1,1,1,3,5,9,17,31,57,105]
7.请在不使用结构伪类选择器的情况下,用CSS实现每个链接之间用竖线分隔,竖线样式为 1px solid #aaa;
<nav class="list"> <ul> <li><a href="#">优酷</a></li> <li><a href="#">爱奇艺</a></li> <li><a href="#">风行</a></li> <li><a href="#">土豆</a></li> <li><a href="#">B站</a></li> </ul> </nav>
* { margin:0;padding:0; } nav{ font-size: 16px; overflow: hidden; margin: 20px 50px; } .list ul { overflow: hidden; } .list li { float: left; list-style-type: none; } .list a { display: block; padding: 0 16px; text-decoration: none; color: #999; } // 实现这一点的关键是使用紧邻同胞选择器 + .list li + li { border-left: 1px solid #aaa; } .list a:hover{ color: #555; }