斐波那契数列
当n = 0,f(n) = 0;当n = 1, f(n) = 1;当n > 1, f(n) = f(n-1) + f(n-2)。现在要求输入一个整数n,请你输出斐波那契数列的第n项
function fibonacci(n) {
if (n <= 0) {
return 0;
}
if(n == 1) {
return 1;
}
return fibonacci(n - 2) + fibonacci(n-1);
}
判断一个字符串是否为回文
function isHuiwen (str) {
let strNew = str.split('').reverse().join('')
if (strNew === str) {
return true
} else {
return false
}
}
数组去重
//使用filter操作数组去重
var arr2=["a",'b','c','d','c','c'];
var r=arr2.filter(function (ele,index,self) {
return self.indexOf(ele)===index;//indexOf返回元素在数组中第一次出现的位置,如果位置不一致则是重复元素
});
console.log(r);
统计一个字符串出现最多的字母
统计和字符出现的次数
let countChar = function countChar(str){
let ro = {};
for(let c of str){
if(!ro[c]){
ro[c] = 1;
}else{
ro[c] ++;
}
}
return ro;
}
查找出次数最多的字符
let findMaxDuplicateChar = function (str){
let chars = countChar(str);
let max = 0;
let char = null;
for(let c in chars){
if(chars[c] > max){
max = chars[c];
char = c;
}
}
return char;
}
解析 URL Params 为对象
let url = 'http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled';
parseParam(url)
/* 结果
{ user: 'anonymous',
id: [ 123, 456 ], // 重复出现的 key 要组装成数组,能被转成数字的就转成数字类型
city: '北京', // 中文需解码
enabled: true, // 未指定值得 key 约定为 true
}
*/
实现模板
let data={
name:'lj',
age:'18'
};
let str='${name}今年${age}岁了';
function render(template, data) {
let r=template.replace(/\$\{([^}]*)\}/g,function () {
return data[arguments[1]];
})
return r;
}
let a =render(str,data);
console.log(a);
字符串翻转
function reserveStr (str) {
if (typeof str !== 'string') {
return false
} else {
let strNew = str.split('').reverse().join('')
return strNew
}
}
let a=reserveStr("abcde");
二分查找
var find = function (arr, ele) {
var start = 0;
var end = arr.length - 1;
while (end - start > 1){
var mid = parseInt((end + start) / 2);
if(arr[mid] == ele){
return true;
} else if (arr[mid] > ele){
end = mid - 1;
} else {
start = mid + 1;
}
}
if(end - start == 1){
if((arr[end] == ele) || (arr[start] == ele)){
return true;
}
}
return false;
}
var arr = [1, 3, 5, 6, 7, 9, 11]
var ele = 3
console.log(find(arr, ele))
插入排序
如果在一个有序数组中插入一个新值
const A=[2,4,7,9,13];//原数组
const x=8;//需要插入的元素
//b代表第一个大于x的数字
const b=A.find(a=>a>8)
//b===undefined 代表所有的元素都比8小
const idx=A.indexOf(b);
A.splice(idx===-1?A.length:idx,0,x);