我是靠谱客的博主 英勇向日葵,最近开发中收集的这篇文章主要介绍JavaScript初级算法总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.实战翻转字符串算法

要求:先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,然后把数组转化成字符串。

function reverseString(str) {
var array = str.split(""); //将字符串转为数组类型
console.log(array);
var t = array.reverse(); //将数组翻转
str = t.join('');//将数组转为字符串
return str;
}
2.计算 所提供整数的阶乘。

要求:如果使用字母n代表一个整数,则阶乘是所有小于或等于n的整数的乘积。

function factorialize(num) {
//利用遍历
var sum = 1;
if (num < 0) {
return null;}
else if (num >0){
for (var i = 1; i <= num; i++) {
sum = sum * i;
}
} else{
sum = 1;
}
return sum;
}

3.回文算法

要求:palindrome(回文)是指一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样

function palindrome(str) {
str = str.replace(",","");//去掉逗号
str = str.replace(".","");//去掉“.”
str = str.replace(/s*/g,"");//去掉字符串所有的空格
var t = str.toLowerCase();//变为小写,排除大小写不同
if (str.toLowerCase() == t.split('').reverse().join('')) {
return true; //如果是回文则返回true
}else{
return false;//否则返回false
}
// Good luck!
}

4.寻找最长的单词的算法

要求:返回提供的句子中最长的单词的长度。返回应该是一个数字

function findLongestWord(str) {
var array = str.split(" "); //将字符串转为数组
//console.log(array);
console.log(array[0].length);//求得数组的长度
var t = array[0].length;//利用遍历得到数组中每个元素的长度
for (var i = 0; i < array.length; i++) {
if (t <= array[i].length) {
t = array[i].length;
str = array[i];
}
}
return str.length;//最后返回长度最长的元素
}

5.设置首字母大写的算法

要求:返回一个字符串,确保字符串的每个单词首字母都大写,其余部分小写。

function titleCase(str) {
str = str.toLowerCase();//先将字符串都变小
var array = str.split(" ");//转为数组
for (var i = 0; i < array.length; i++) {//遍历,将首字母变为大写,利用“+”将大小写字母接在一起
array[i] = array[i].substring(0,1).toUpperCase()+array[i].substring(1);
}
str = array.join(" ");//数组变回字符串
return str;
}

6.寻找数组中的最大值算法

要求:请分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新的数组。

function largestOfFour(arr) {
for (var i = 0; i < arr.length; i++) {
var t = arr[i][0];
for (var j = 0; j < arr[i].length; j++) {
if(t < arr[i][j]) {
t = arr[i][j];
}
}
arr[i]=t;
}
return arr;
}

7.确认末尾字符算法

要求:检查一个字符串(str)是否以指定的字符串(target)结尾。

function confirmEnding(str, target) {
if (str.endsWith(target)) {
return true;
}else{
return false;
}
}

8.重复操作算法

要求:循环拼接一个指定的字符串 num次,如果num是一个负数,则返回一个空字符串。

function repeat(str, num) {
var t = str;
if (num < 0) {
return "";
}else{
for (var i = 1; i < num; i++) {
t = t + str;
}
str = t;
}
return str;
}

9.字符串截取算法

要求:如果字符串的长度比给定的参数num长,则把多余的部分用...来表示。

切记,插入到字符串尾部的三个点号也会计入字符串的长度。然而,如果指定的参数num小于或等于3,则添加的三个点号不会计入字符串的长度。

function truncate(str, num) {
if(num > 3){
if (str.length > num) {
str = str.slice(0,num-3)+"...";
}
}else{
if (str.length > num) {
str = str.slice(0,num)+"...";
}
}
return str;
}

10.数组分割算法

要求:编写一个函数,把一个数组arr按照指定的数组大小size分割成若干个数组块。

function chunk(arr, size) {
var t = [];
var arr2 = arr;
for (var i = 0; i < arr.length; i += size) {
t.push(arr.slice(i, i + size));
}
arr = t;
return arr;
}

11.数组截断算法

要求:返回一个数组被截断n个元素后还剩余的元素,从索引0开始截断

function slasher(arr, howMany) {
arr.splice(0,howMany);
console.log(arr);
return arr;
}

12数组查询算法

要求:如果数组第一个字符串元素包含了第二个字符串元素的所有字符,则函数返回true。

function mutation(arr) {
for (var i = 0; i < arr[1].length; i++) {
var t = arr[1].toLowerCase().slice(i,i+1);
if (arr[0].toLowerCase().indexOf(t) != -1) {
//indexOf用于从头到尾检测字符串是否含有字串,它对大小写敏感,所以先转为小写在判断
return true;
}else{
return false;
}
}
}

13.删除数组中特定值的算法

要求:删除数组中的所有的假值。例false,NaN,undefined,null,“”,0

function bouncer(arr) {
var t = [];
for (var i = 0; i < arr.length; i++) {
if (Boolean(arr[i])) {
t.push(arr[i]);
}
}
arr = t;
return arr;
}

14.去除数组中任意多个值的算法

要求:实现一个 destroyer 函数,第一个参数是初始数组,后跟一个或多个参数。从初始数组中删除与这些参数具有相同值的所有元素。

function destroyer(arr) {
//arguments是保存当前函数所有的参数的类数组对象
var argArr = arguments;
//遍历参数数组,与初始数组的每个元素进行比较,返回初始数组中不同的元素
for(var i = 1; i < argArr.length; i++){
arr = arr.filter(function(val){
return argArr[i] !== val;
});
}
return arr;
}

15数组排序并插入值算法

要求:先给数组排序,然后找到指定的值在数组的位置,最后返回位置对应的索引。

function where(arr, num) {
// Find my place in this sorted array.
arr.sort(function(a,b){
return a - b;
});
for (var i = 0; i < arr.length; i++) {
if (arr[i] == num | arr[i] > num) {
return i;
}
}
num = i;
return num;
}
where([40, 60], 50);

16位移密码算法

要求:移位密码也就是密码中的字母会按照指定的数量来做移位。

function rot13(str) { // LBH QVQ VG!
var arr = str.toUpperCase().split(" ");
var str1 = [];
for (var i = 0; i < arr.length; i++) {
var arr1 = arr[i].split("");
for (var j = 0; j < arr1.length; j++) {
var num = arr1[j].charCodeAt();
if (num >= 65 && num <= 90) {
arr1[j] = num + 13 > 90 ? String.fromCharCode(64 + (num + 13 - 90)):String.fromCharCode(num + 13); //64 + (num + 13 - 90) 要明白为什么是64 ,
}
}
str1.push(arr1.join(""));
}
return str1.join(" ");
}
// Change the inputs below to test
rot13("SERR PBQR PNZC");














最后

以上就是英勇向日葵为你收集整理的JavaScript初级算法总结的全部内容,希望文章能够帮你解决JavaScript初级算法总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部