以下题目来自前端开发博客微信群每日一道面试题汇总,由管理员整理而成的附上答案。希望对你们有用,以后每周都会有。
/**
* 数组扁平化(方式一)
* @param {Array} arr 数组
*/
function flat1 (arr) {
return [].concat(...arr.map(v => Array.isArray(v) ? flat1(v) : v))
}
/**
* 数组扁平化(方式二)
* @param {Array} arr 数组
*/
function flat2 (arr) {
return arr.flat(Infinity)
}
/**
* 数组去重复
* @param arr {Array} 数组
*/
function unique(arr){
return arr.filter((v, i) => Object.is(i, arr.indexOf(v)))
}
/**
* 出现重复字符的个数
* @param {String} text 字符串
*/
function duplicateCount (text) {
return (text.toLowerCase().split('').sort().join('').match(/(.)\1+/g) || []).length
}
function DNAResolve (dna) {
return dna.replace(/(A|T|C|G)/gi, function($1){
return {
A: 'T',
T: 'A',
C: 'G',
G: 'C'
}[$1]
})
}
function camelCase (str) {
return str.split(' ').map(v => v.replace(/\b(\w)/g, function (fl) {
return fl.toUpperCase()
})).join('')
}
camelCase('hello world') // 'HelloWorld'
已知斐波那契数列规律为[1, 1, 2, 3, 5...], 而泰波那契数列是从第4个元素开始,后面每个元素都是前3个元素之和,请写一个有2个参数的函数,参数1是初始化数组,参数2是该函数返回泰波那契数组的长度,返回值是泰波那契数列。
function tribonacci(signature,n){
for (var i = 0; i < n-3; i++) {
signature.push(signature[i] + signature[i+1] + signature[i+2]);
}
return signature.slice(0, n);
}
tribonacci([1,1,1],1) // [1]
tribonacci([0,2,7],2) // [0, 2]
tribonacci([1,1,1],10) // [1,1,1,3,5,9,17,31,57,105]
<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;
}