概述
初级算法2
第六关 寻找数组中的最大值算法
问题:
在右边的大数组中包含了4个小数组,请分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新的数组。
提示:你可以用for循环来迭代数组,并通过arr[i]
的方式来访问数组的每个元素。
function largestOfFour(arr) {
// You can do this!
return arr;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
过程:
function largestOfFour(arr) {
var maxarr=[]; //先定义的一个新数组,用来存储每个就数组中的最大的值
for(var i=0;i<arr.length;i++){ //把arr数组分成一小组
var maxval=0; // 定义一个变量。用来获取每一小组中的最大值
for(var j=0;j<arr[i].length;j++){ // 遍历每一小组
if(arr[i][j]>maxval){ //在每一小组中做对比
maxval=arr[i][j];
}
}
maxarr[i]=maxval; // 每一小组遍历完后,都有一个最大值,把它存给maxarr数组中,换下一轮小组。
}
return maxarr;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
//输出 [5,27,39,1001]
第七关 确认末尾字符算法
问题:
检查一个字符串(str
)是否以指定的字符串(target
)结尾。
如果是,返回true;如果不是,返回false。
过程:
该题目中,要考虑多种条件下,
function confirmEnding(str, target) {
if(str.length<target.length){
return false;
}else if(str==target || str.substr(str.length-target.length)==target){
//sbustr()方法 当为一个数字时,获取的字符串的该数字对应的字
//str.length-target.length 该题目为5 对应着就是Bastian 中的n
//不同可以了解 可以看第五关内容。
return true;
}else{
return false;
}
}
confirmEnding("Bastian", "n");
//输出 true
第八关 重复操作算法
问题:
循环拼接一个指定的字符串 `num`次,如果`num`是一个负数,则返回一个空字符串。
过程:
function repeat(str, num) {
if (num<0) {
return "";
}
var stradd=str; //当num=0时,stradd==str 所以这里要先等于str。
for(var i=1;i<num;i++){ //因为上面已经有零了,所以这里的i=1开始
stradd+=str;
}
return stradd;
}
repeat("abc", 3);
//输出 abcabcabc
第九关 字符串截取算法
问题:
如果字符串的长度比给定的参数num
长,则把多余的部分用...
来表示。
切记,插入到字符串尾部的三个点号也会计入字符串的长度。
然而,如果指定的参数num
小于或等于3,则添加的三个点号不会计入字符串的长度。
方法预知:
1.String.prototype.slice()提取字符串的一部分并将其作为新字符串返回,而不修改原始字符串。
【ps】:空格 标点符号都算一个字符,从编号从0开始。
var str = 'The quick brown fox jumps over the lazy dog.';
console.log(str.slice(31)); //当只有一个正数 相当于从 第31字符开始到 末尾
// expected output: "the lazy dog."
console.log(str.slice(4, 19));
// expected output: "quick brown fox"
console.log(str.slice(-4)); //从末尾开始 截取到 倒数第4给 字符
// expected output: "dog."
console.log(str.slice(-9, -5));
// expected output: "lazy"
过程:
function truncate(str, num) {
//先获取的字符串的长度
//如果字符串长度大于num的长度,则字符串的长度改为num的长度,后面用...代替
//如果len> num 则 调用slice()方法
var len = str.length;
if(len > num){
if(num > 3){
str = str.slice(0,num - 3) + "..."; //num-3就是
}else{
str = str.slice(0,num) + "...";
}
}
return str;
}
truncate("A-tisket a-tasket A green and yellow basket", 11);
//输出 A-tisket...
truncate("Peter Piper picked a peck of pickled peppers", 14);
//输出 Peter Piper...
truncate("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length);
//输出 A-tisket a-tasket A green and yellow basket...
truncate("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length + 2);
//输出 A-tisket a-tasket A green and yellow basket
truncate("A-", 1);
//输出 A...
truncate("Absolutely Longer", 2);
//输出 Ab...
第十关 数组分割算法
问题:
编写一个函数,把一个数组arr
按照指定的数组大小size
分割成若干个数组块。
例如:chunk([1,2,3,4],2)=[[1,2],[3,4]];
chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]];
过程:
function chunk(arr, size) {
var len = arr.length; //获取数组的长度
var resultArr = [];
for(var i=0;i<len;){
//数组块
var groupArr = [];
for(var j=0;j<size;j++){ //开始分四个为一组
groupArr.push(arr[i]); //传给groupArr[]数组内
i++;
}
resultArr.push(groupArr);
//如果剩余的数不够一个数组块的大小
if(len - i < size){ //2<4
size = len - i; //size=2;
}
}
return resultArr;
}
chunk([0, 1, 2, 3, 4, 5], 4); //分成4个为一组。
//输出 [[0,1,2,3],[4,5]]
最后
以上就是沉静灯泡为你收集整理的JavaScript初级算法2初级算法2的全部内容,希望文章能够帮你解决JavaScript初级算法2初级算法2所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复