接着上篇文章持续写。
5、 找出多个数组中的最大数字
输出:largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]])
输入:[27, 5, 39, 1001]
解法:

function largestOfFour(arr) {  let temp = [];  for(let i =0;i<arr.length;i++) {    temp.push(Math.max(...arr[i]));  }  return temp;}

思路:
题目给出的是数组中的数组,要求算出每个外部数组里的最大值再组成一个数组返回。
首先 定义一个新的数组用于存最大值,其次遍历大数组arr里的小数组,用Math.max办法找最大值,再push到新数组里。

6、 确认结尾
查看字符串(第一个参数 str)是否以给定的指标字符串(第二个参数 target)完结。
输出:confirmEnding("Congratulation", "on")
输入:true
解法一:

function confirmEnding(str, target) {  let len = target.length;  if(str.substring(str.length-len)=== target){    return true;  }else{    return false;  }}

思路:
判断字符串是否以某字符串结尾,首先想到js里的substring办法,那么substring的话就想到字符串开端的话,那不就是倒数的子串吗,所以要先算出指标子串的大小,而后再用substring的办法确认倒数的子串是否和指标字符串一样,一样的话就返回true,反之false。
知识点:字符串的substring办法,substring(str.length-x)示意从倒数第x个索引到开端的字符。

解法二:

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

思路:解法二就比较简单了,间接用js内置的endsWith办法来判断某字符串是否是某字符串的开端字符就能够了,然而题目要求了不要用.endsWith办法,所以第一种substring就挺好。

7、 反复输入字符串
将一个给定的字符串 str(第一个参数)反复输入 num(第二个参数)次。 如果 num 不是负数,返回空字符串。 在这个挑战中,请不要应用 JavaScript 内置的 .repeat() 办法。
解法一:

function repeatStringNumTimes(str, num) {  let temp = str;  if(num <=0) {    str = "";  }  for(let i = 0;i<num-1;i++)  {    str +=temp;  }  return str;}

思路:
最笨的思路,反复输入的话就遍历次数反复累加下来呗,首先把字符串赋值给一个长期变量,而后依据num-1遍历复制的次数,累加到str下来。
解法二:

function repeatStringNumTimes(str, num) {  if(num <=0) {    str = "";  }else{    str = str.repeat(num);  }  return str;  }

思路:
解法二用到的是题目不让用的办法repeat,外面填须要复制的次数即可。
知识点:repeat办法

8、 截断字符串
如果传入的字符串(第一个参数)的长度大于传入的值(第二个参数),请在这个地位截断它, 并在前面加上 ...,而后返回后果。
输出:truncateString("A-tisket a-tasket A green and yellow basket", 8)
输入:A-tisket..

解法:

function truncateString(str, num) {  if(str.length >num ){    str = str.slice(0,num)+'...';  }  return str;}

思路:
先比拟字符串的长度和num的大小,而后用slice的办法截取字符串在用+拼接’…’

9、 按参数过滤数组
输出:findElement([1, 3, 5, 8, 9, 10], function(num) { return num % 2 === 0; })
输入:8
输出:findElement([1, 3, 5, 9], function(num) { return num % 2 === 0; })
输入:undefined
解法:

function findElement(arr, func) {  for(let i = 0;i<arr.length;i++) {    if(func(arr[i])){      return arr[i];    }    if(i==arr.length-1 && func(arr[i]) === false ){      return undefined;    }  }}

思路:
就遍历过滤,最笨的办法,后续有好思路再更新。
10、 根本类型布尔值的查看
查看一个值是否是根本类型(boolean)类型,返回true或false
解法:

function booWho(bool) {  if(typeof bool === "boolean"){    return true;  }else{    return false;  }}

11、 句中单词首字母大写
请将传入的字符串中,每个单词的第一个字母变成大写并返回。 留神除首字母外,其余的字符都应是小写的。
输出:titleCase("I'm a little tea pot")
输入:I'm A Little Tea Pot

解法:

function titleCase(str) {            var lowerStr = str.toLowerCase();  //先全副转为小写            var splitArr = lowerStr.split(' ');      //拆分成数组            for(var i=0;i<splitArr.length;i++){                splitArr[i] = splitArr[i][0].toUpperCase()+splitArr[i].substring(1,splitArr[i].length); //循环,并对每一项赋值            }            str = splitArr.join(' ');     //拼接成字符串            return str;        }

12、Slice与Splice
本挑战的输出参数为两个数组和一个索引值。
将第一个数组中的所有元素顺次复制到第二个数组中。
请留神,你须要从第二个数组索引值为 n 的中央开始插入。
最初,请返回插入元素后的数组。 作为输出参数的两个数组在函数执行前后应放弃不变。
输出:frankenSplice([1, 2, 3], [4, 5], 1)
输入: [4, 1, 2, 3, 5]
输出:frankenSplice([1, 2, 3, 4], [], 0)
输入:[1, 2, 3, 4]
函数运行后,第一个数组应放弃不变。
函数运行后,第二个数组应放弃不变。
解法一:

function frankenSplice(arr1, arr2, n) {  let localArray = arr2.slice();  for (let i = 0; i < arr1.length; i++) {    localArray.splice(n, 0, arr1[i]);    n++;  }  return localArray;}frankenSplice([1, 2, 3], [4, 5, 6], 1);

思路:①因为题目有要求“第二个数组应放弃不变”,所以用数组的slice办法基于arr2复制出localArray,用 localArray实现题目要求;
②循环遍历arr1,顺次将arr1里的元素插入到localArray里,此处用到了splice办法,留神题目要求“依照程序插入”,所以n坐标要递增。
知识点:Array的两个办法=》slice,splice
Slice(start,end):相当于数组的浅拷贝,不扭转原数组值,[start,end)从start开始,不蕴含end,若不填值,则示意全副复制,其中end是可选的,若只填start,则示意从 start开始到开端,
Splice(start,count,item):删除或插入元素,会扭转原数组,start示意开始索引,count示意要删除元素的数量,item要是有值就示意插入的值(item能够不止一个),要想插入元素,count就设置为0。
横开展:解法一的第②步用的办法是n坐标递增,还有一种办法是倒序循环,这样n就不必递增了,如下所示:

function frankenSplice(arr1, arr2, n) {  let localArray = arr2.slice();  for(let i=arr1.length-1;i>=0;i--){    localArray.splice(n, 0, arr1[i]);  }  return localArray;}

解法二:

function frankenSplice(arr1, arr2, n) {  let localArr = arr2.slice();  localArr.splice(n, 0, ...arr1);  return localArr;}

思路:跟解法一的思维一样,只是把循环替换成了spread操作符,间接用…arr1就插入到localArr里了。

后续也会接着写。