前端面试

举报
达拉崩巴斑得贝迪卜多 发表于 2021/12/20 23:16:50 2021/12/20
【摘要】 1.冒泡排序 选择排序 冒泡排序 冒泡排序规则:前后两两进行比较,如果符合比较的条件,就交换两个数的位置,直到所有的数据,都符合从小到大条件,结束排序。 规律:每一轮比较,都会找出一个较大的数,放在正确...

1.冒泡排序 选择排序

冒泡排序
冒泡排序规则:前后两两进行比较,如果符合比较的条件,就交换两个数的位置,直到所有的数据,都符合从小到大条件,结束排序。
规律:每一轮比较,都会找出一个较大的数,放在正确的位置。
比较的轮数 = 数组长度 - 1;
每一轮比较的次数 = 数组长度 - 当前轮数;
具体代码如下:

//冒泡排序
let arr = [100, 55, 5, 20, 8];
for (let i = 0; i < arr.length - 1; i++) {  //决定比较几轮
    for (let j = 0; j < arr.length - i - 1; j++) {  //决定每一轮比较多少次 
        if (arr[j] > arr[j + 1]) {
            let temp = arr[j];  // 变量互换位置
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }
}
console.log(arr); // [ 5, 8, 20, 55, 100]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

选择排序
规律:通过比较首先选出最小的数放在第一个位置上,然后在其余的数中选出次小数放在第二个位置上,依此类推,直到所有的数成为有序序列。
比较的轮数 = 数组长度 - 1
每一轮比较次数 = 数组长度 - 当前轮次

具体代码如下:

//用选择排序的方法从小到大排列数组元素。
let arrs = [9, 8, 7, 6, 5, 4];
//比较的轮数
for(let i = 0; i < arrs.length - 1; i++){
    //每轮比较的次数
    for(let j = i + 1; j < arrs.length; j++){
        if(arrs[i] > arrs[j]){
            let tmp = arrs[i];
            arrs[i] = arrs[j];
            arrs[j] = tmp;
        }
    }
}
console.log(arrs);  //[ 4, 5, 6, 7, 8, 9 ]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2.字符串中大写字母出现的次数

思路:用ASCII码 来判断 65-90 是大写字母的范围

charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。
具体代码如下:

let str = 'ASDdvdbFDGFGNaaR';
let temp = 0;
for (let i = 0; i < str.length; i++) {
    if (str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 90) {
        temp++;
    }
}
console.log(temp);  //10

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3.字符串中字母相同的个数

思路:声明一个空的对象,用字符串中的值 作为对象的key 键名 value为存在的个数

let str2 = 'aaabbbfgtfffdfhgnfh';
let obj = {}; //声明一个空的对象  对象中的key值是不能重复存在的  所以用str2里的每一个字母作为key的值
for (let i = 0; i < str2.length; i++) {
    let char = str2.charAt(i);  //遍历出str2里面的每一个字母
    if (obj[char]) {
        obj[char]++;  //存在则++
    } else {
        obj[char] = 1;  //不存在则value 赋值为1
    }
}
console.log(obj);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

4.数组去重

第一种方法(set,get)
set里不可以出现重复的元素 并且是无序的

let arr2 = [10, 10, 50, 60, 82, 50, 10, 65, 80, 90];
let setArr = new Set(arr2);  //去重了  但是没有顺序  Set { 10, 50, 60, 82, 65, 80, 90 } 是一个对象
let getArr = Array.from(setArr);  // [10, 50, 60, 82, 65, 80, 90]  去重并且排序
console.log(getArr);

  
 
  • 1
  • 2
  • 3
  • 4

第二种方法(indexOf)
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。–有值
没有值则返回 -1;

let temp2 = [];

for (let i = 0; i < arr2.length; i++) {
    if (temp2.indexOf(arr2[i]) === -1) {
        temp2.push(arr2[i])
    }
}
console.log(temp2);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

文章来源: lvsige.blog.csdn.net,作者:祥子的小迷妹,版权归原作者所有,如需转载,请联系作者。

原文链接:lvsige.blog.csdn.net/article/details/106995894

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。