<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
// 翻转字符
var str="abcdefg";
console.log(str.split("").reverse().join())
// 阶乘
function f(num){
if(num==0){
return 1;
}
return num*f(num-1);
}
console.log(f(5))
// 回文字符串 忽略空格和空字符串
var str1="abcd d '' cba";
str=str1.replace(/\s+/g,"");
d = str.replace(/\'/g, "");
s=d.toLocaleLowerCase();
function huiwen(str){
for(var i= 0,j=str.length-1;i<j;i++,j--){
if(str.charAt(i)!==str.charAt(j)){
return false
}
return true;
}
}
console.log(huiwen(s))
// 寻找最长单词算法挑战
var str2="I am form northwest university";
var arr2=str2.split(" ");
console.log(arr2)
for(key in arr2){
var max=0;
var len=arr2[key].length;
if(max<len){
var temp=len;
len=max;
max=temp;
}
}
console.log(max)
// 设置首字母大写算法挑战
var str3="I am form northwest university";
var arr3=str3.split(" ");
for(var i=0;i<arr3.length;i++){
arr3[i]=arr3[i][0].toLocaleUpperCase()+arr3[i].slice(1).toLowerCase();
}
console.log(arr3);
// 寻找数组中的最大值算法
var arr4=[[1,6,3],[3,4,5],[3,7],[8,9]];
var max=0;
var b=[];
for(var i=0;i<arr4.length;i++){
for(j=0;j<arr4[i].length;j++){
if(max<arr4[i][j]){
var temp=arr4[i][j];
arr4[i][j]=max;
max=temp;
}
}
b.push(max);
}
console.log(b);
// 确定末尾字符算法
function confirmEnding(str,target){
var arr1=str.split("");
var arr2=target.split("");
for(var i=arr2.length-1,j=arr1.length-1;i>=0;i--,j--){
if(arr1[j]!=arr2[i]){
return false
}
}
return true;
}
console.log(confirmEnding("I am form northwest university","ty"))
// 重复操作算法 例如repeat("abc",2) 应返回abcabcabc
function repeat(str,num){
var string="";
if(num==0){
string=str;
}
else{
for(var i=0;i<num;i++){
string+=str
}
}
return string;
}
console.log(repeat("abc",2))
// 字符串截取算法 如果字符串长度比比给定的参数num长,则把多余的部分用...来表示*/
function truncate(str,num) {
if(str.length<=num){
return str;
}else if(str.length>num&&num<=3){
return str.slice(0,num)+"...";
}else if(str.length>num&&num>3){
return str.slice(0,num-3)+"...";
}
return str;
}
console.log(truncate("A-tisket a-tasket A green and yellow basket", 11));
/*数组分割算法 chunk([1,2,3,4],2)=[[1,2],[3,4]]*/
function chunk(arr,size){
var c=[];
for(var i=0;i<arr.length;i=i+size){
c.push(arr.slice(i,i+size));
}
return c;
};
console.log(chunk([1,2,3,4],2));
// 数组截断算法
function slasher(arr,num) {
arr.splice(0,num)
return arr;
}
console.log(slasher([1,2,3,4],2))
//数组查询算法
function mutation(arr) {
var str1=arr[0];
var str2=arr[2];
for(var index in str2){
if(str1.indexOf(str2[index])==-1){
return false;
}
}
return true;
}
console.log(mutation(["hello","hey"]))
// 删除数组中所有的假值 假值包括null undefined 0 "" NaN false
function bouncer(arr) {
return arr.filter(Boolean);
}
console.log(bouncer([0,NaN,false,"hello",1,,null,2,true]))
//去除数组中多个值算法 destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3) 返回[1,5]
function destroyer(arr) {
var arg=arguments;
for(var i=1;i<arg.length;i++){
arr=arr.filter(function (item) {
return arg[i]!==item;
})
}
return arr;
}
console.log(destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3));
//数组排序并插入值算法
function where(arr,num) {
arr.push(num)
arr.sort()
return arr.indexOf(num)
}
console.log(where([1,2,3,4],1.5))
//位移密码算法 已常见的ROT13密码 字母会移动13个位置 如a-n b-o
function rot13(str){
var n=0;
var num=0;
var arr=new Array();
for(var i=0;i<str.length;i++){
n=str.charCodeAt(i);
if(n>=65&&n<=90){
if(n>=78&&n<90){
num=n-13;
arr[i]=String.fromCharCode(num);
}else{
num=90-13+n-65+1;
arr[i]=String.fromCharCode(num);
}
}else{
arr[i]=String.fromCharCode(n);
}
}
var string=arr.join("");
return string;
}
// Change the inputs below to test
console.log(rot13("SERR CVMMN!"));
</script>
</body>
</html>