// 回文
function palindrome(str){
let str2 = str;
str2 = str2.split('').reverse();
str2.shift();
str2 = str2.join('');
return str + str2;
}
// 数组去重
// ES6写法
function notDuplication(arr){
return Array.from(new Set(arr));
}
// ES5写法
function notDuplication(arr){
let newArr = [];
for(let i in arr){
if(arr[i] in newArr){}
else{
newArr[arr[i]] = true;
}
}
return Object.keys(newArr);
}
// 字符串中出现次数最多的字符
function maxTime(str){
let arr = str.split('');
let newArr = [];
let maxValue = 0;
let maxIndex;
for(let i in arr){
arr[i] in newArr ? newArr[arr[i]]++ : newArr[arr[i]] = 1;
}
for(let i in newArr){
if(newArr[i] > maxValue){
maxValue = newArr[i];
maxIndex = i;
}
}
return maxIndex;
}
// 随机生成指定长度的字符串
function randomStr(len){
function randomIndex(arrLen){
let index = parseInt(Math.random() * 100);
return index = index > arrLen - 1 ? randomIndex(arrLen) : index;
}
let letter = 'abcdefghijklmnopqrstuvwxyz1234567890';
let letterArr = letter.split('');
let newStr = '';
for(let i = 0;i < len;i++){
newStr += letterArr[randomIndex(letterArr.length)]
}
return newStr;
}
// 冒泡排序
function bubbling(arr){
for(let i = 0;i < arr.length - 1;i++){
for(let j = 0;j < arr.length - 1 - i;j++){
if(arr[j] > arr[j+1]){
let temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
// 选择排序
function selected(arr){
let minIndex,temp;
for(let i = 0;i < arr.length - 1;i++){
minIndex = i;
for(let j = i + 1; j < arr.length; j++){
if(arr[j] < arr[minIndex]){
minIndex = j;
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
// 实现字符串翻转
function reverseStr(str){
let newStr = '';
for(let i = str.length - 1;i >= 0;i--){
newStr += str[i];
}
return newStr;
}
// 数组中最大差值
function maxDiff(arr){
let max = arr[0];
let min = arr[0];
for(let i = 0;i < arr.length;i++){
if(arr[i] > max){
max = arr[i];
}
if(arr[i] < min){
min = arr[i];
}
}
return max - min;
}
// 阶层
// 递归实现
function factorial(num) {
if(num < 0){
return -1;
}
else if(num == 0 || num == 1){
return 1;
}
else{
return num * factorial(num-1);
}
}
// 普通实现
function factorial(num){
if (num < 0) {
return -1;
}
else if (num == 0 || num == 1) {
return 1;
}
else{
let result = 1;
for (let i = 1; i <= num - 1; i++) {
result = result * (i + 1);
}
return result;
}
}
// 斐波那契数列(黄金分割点)
function fibonacci(n){
let arr = [];
for(let i = 0;i < n;i++){
i < 2 ? arr.push(i) : arr.push(arr[i - 1] + arr[i - 2]);
}
return arr;
}
网友评论