1.反转字符串
解法一、
思路:从坐标的最大值减减
function b(str){
let res ='', //新建一个变量接受循环值
for(let i=str.length-1;i>=0;i--){ //根据length的最大值向前递减做循环,res接收排列
res+=str[i]
}
return res
}
//解法二
function b(str){
let arr =str.split('');
let i =0, j=str.length-1;
// i+j=length-1 j=length-1-i 二者对应关系:对应的不是值,是length长度值
while(i<j){
[ arr[i],arr[j] ] =[ arr[j],arr[i] ];
//或者
//let temp =arr[i];
//arr[i]=arr[i];
//arr[j]=temp
i++;
j--;
}
return arr.join('');
}
//解法三、
function b(str){
return str.split('').reverse().join('');
//reverse是数组方法,需要转数组 另字符串无法通过index转值
}
///解法四
function b(str){
if(!str){ //str.length==0
return ''; // 防止空字符
} else if(str.length==1){
return str;
}
let end = str[end] + b(str.slice(1,end)) + str[0] //采用递归的思想
}
b("hello") 得到 //olleh
2.n的阶乘
解法一、for循环
//解法一
function a(res){
if(res===0){
return 1
}else if(
let num = 1;
for(let i = 2;i<= res ;i++){
num*=i
}
return num
)
}
//解法二、递归
function b(num){
if(num===0){
return 1
}
return num*b(num-1)
}
3.字符串中最长的单词
//解法一、
function b(str){
let res = 0,tem=0
for(let i=0;i<str.length;i++){
if(str[i]===""){
res = Math.max(res,temp); //max 取二者最大值
temp = 0;
}else{
temp++
}
}
return Math.max(res,temp);
}
//解法二、
function b(str){
let res = 0,tem=0
for(let i=0;i<str.length;i++){
if(str[i]===""){
if(temp>res){
res=temp;
}
temp = 0;
}else{
temp++
}
}
return res
}
//解法三、
function b(str){
let arr = str.split("");
let res =0;
for(let i = 0; i<arr.length;i++){
res=Math.max(res,arr[i].length);
}
return res;
}
//解法四、
function b(str){
return Math.max.apply(null,str.split("").map(e=>e.length));
//es6 写法
//return Math.max(...str.split("").map(e=>e.length));
}
4.数组扁平化找最大值
//解法一、
function b(arr){
return arr.map(item=>Math.max(...item));
}
//解法二、reduce
function b (arr){
arr.reduce((accum,curr)=>{ // reduce方法可用作迭代累加运算
Math.max(accum,cuur) // accum 是上一次计算后-Infinity更新后的值
}, -Infinity) //cuur 是当前值
}
//解法三、双重for循环
//此解法是已知二层嵌套,如不知嵌套层数,可以加个判定重新走循环
function b(str){
let result = []
for(let i = 0;i<arr[i];i++){
let max = -Infinit
for(let j= 0;j<=arr[i].length;j++){
max=Math.max(max,arr[i][j])
}
result.push(max)
}
return result
}
b([[1,2,30],[2,3,5],[6,5,4]]) // 得到30
5.数组是否以某个值结尾
//解法一、循环判定
function b (str,target){
if(str.length<tartget.length){
return false
}
let i = str.length-1,
let j = target.length-1;
while(j>=0){
if(str[i] !== target[j]){
return false;
}
i--;
j--;
}
return true
}
//解法二、slice方法
function b (str,target){
if(str.length<tartget.length){
return false
}
return str.slice(-target.length) === target;
}
6.斐波那契数列
function b(str){
let num = [1,2]
let len =num.length-1 //最后一个值
for(let i= num[len];i<=str;i=num[len]+num[len-1]){
num.push(num[len-1]+num[len])
len++
}
return num
}
console.log(b(100))
7.重复字符串
//方法一
function packeg(str,num){
let res='';
for(let i= 0;i<num;i++){
res+=str
}
}
//解法二
function packeg (str,num){
if(num<=0){
return '';
}
return Array(num+1).join("str")
}
8,切割字符串用...代替(css溢出打点)
//解法一
function packeg (str,num){
if(str.length<num){
return str
}
return str.slice(0,num)+"...";
}
9.查找第一个符合条件的元素
//解法一
function packeg (arr,func){
for(let i=0;i<arr.length;i++){
if(func(arr[i])){
return arr[i]
}
}
return
}
//解法二
function packeg (arr,func){
return arr.filter(func)[0];
}
//解法三
function packeg (arr,func){
return arr.find(func)
}
10判断是否是布尔类型
function packeg (bool){
return typeof bool === "boolen";
}
11.字符串单词首字母大写
//解法一
function packeg (str){
let flag= true;
let res='';
for(let i=0;i<str.length;i++){
if(flag){
res+str[i].toUpperCase();
flag=false;
}lese{
res+str[i].toLowerCase();
if(str[i]===" "){
flag=true
}
}
}
return res
}
//解法二
function packeg (str){
return str.split(' ').map(item=>{
item[0].toUpperCase()+item.slice(1).toLowerCase()
}).join(' ');
}
//解法三
function packeg (str){
return str.toLowerCase().replice(/(^|\s)[a-z]/g, match=>match.toUpperCase())
}
12.数组插入数据
function packeg (arr1,arr2,n){
let copy=arr2.slice();
copy.splice(n,0,...arr1);
return copy;
}
13.数组去重
//解法一
function str(arr){
let newArr=[]
for(var i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i])==-1){
newArr.push(arr[i])
}
}
console.log(newArr)
}
}
//解法二
function unique(arr){
var res = [arr[0]];
for(var i=1;i<arr.length;i++){
var repeat = false;
for(var j=0;j<res.length;j++){
if(arr[i] == res[j]){
repeat = true;
break;
}
}
if(!repeat){
res.push(arr[i]);
}
}
return res;
}
//解法三
function unique(arr){
var arr2 = arr.sort();
var res = [arr2[0]];
for(var i=1;i<arr2.length;i++){
if(arr2[i] !== res[res.length-1]){
res.push(arr2[i]);
}
}
return res;
}
function unique(arr){
var res =[];
var json = {};
for(var i=0;i<arr.length;i++){
if(!json[arr[i]]){
res.push(arr[i]);
json[arr[i]] = 1;
}
}
return res;
}