学习js的第七天【选择排序,数组去重,字符串】

一、选择排序

1.思想:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置(交换位置),再从剩余未排序元素中继续寻找最小(大)元素,放到序列末尾,重复以上操作。

n个数,进行n-1次选择

//n个数,进行n-1次选择 
var arr = [12, 11, 23, 34, 43, 21, 42, 55, 13]
        var n = arr.length
        for (var i = 0; i < n - 1; i++) {
            var minIndex = i   //假设第一个数为最小数
            for (var j = i + 1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {    
                    minIndex = j    //分别与最小数比较,如果有小于最小数的数就把值赋给minIndex
                }
            }
            //把元素进行交换,然后把最小数放到最前面
            var temp = arr[i]
                arr[i] = arr[minIndex]
                arr[minIndex] = temp
        }
         console.log(arr)

二、数组去重【高频面试题】

1.思想:定义一个空数组存储去重后的元素

             遍历原数组

             判断新数组中是否有原数组中的当前元素,如果没有,就存储到新数组中去

//方法一
var arr = [2, 2, 34, 5, 4, 6, 8, 6]
        var newArr = []
        for (var i = 0; i < arr.length; i++) {
            if (newArr.indexOf(arr[i]) == -1) {
                newArr.push(arr[i])
            }
        }
        console.log(newArr)

//方法二,双重for循环
var arr=[22,3,4,3,5,12,22,3,4,56,7,6,5]
for(var i=0;i<arr.lenght;i++){
  var item=arr[i]
//依次让后面的元素与外层for循环进行比较,如果重复就进行截取
for(var j=i+1;j<arr.length;j++){
 if(item=arr[j]){
   arr.splice(j,1)
   j--
    }
  }
}

三、字符串:属于包装类型

1.字面量方式:var str='helloword'

2.构造函数方式:var str=new String('helloword')

3.字符串是由一系列字符构成,每个字符对应数组下标,和数组相似

4.访问字符串:str[0],不能赋值

5.length字符串长度:console.log(str.length)

6.字符串遍历:

for(var i=0;i<str.length;i++){
console,log(str[i])}

7.包装类型:当使用点语句调用属性和方法时,自动转为复杂数据类型,使用完又转为基本数据类型。使用点语句:.tostring

四、字符串的常用方法

1.charAt:==>根据下标返回字符

str.charAt(下标) 

2.indexOf==>返回字符在字符串中的下标,如果字符不存在返回-1(从右往左找)

console.log(str.indexOf('h'))

3.lastIndexOf==>从右往左找

4.substring==>用来截取字符串--->与slice类似

substring(从哪个索引开始,到那个索引结束),包含开始,不包含结束

5.substr==>也用来截取字符串--->与splice类似

str.substr(1,3)-->表示从一开始,截取三个元素

6.replace==>用于在字符串中用一些字符串替换另一些字符串

replace(原字符串,新字符串)

7.split==>分割字符串,将分割之后的字符串存入数组返回

split('')==>返回数组  【字符串转数组】

8.concat==>连接两个字符串,连接之后返回链接的字符串

var str='hello'

var newStr=str.concat('word')

9.trim==>删除字符串两端的空白符,返回去掉空格的新字符

10.startswith()==>判断字符是否以什么开始,时返回ture,否返回false

 

11.endswith()==>判断字符是否以什么结束,时返回ture,否返回false

12.toLowerCase==>将字母转成小写

13.toUpperCase==>将字母转成大写

列题:

//反转字符串
var str = 'abcdefg'
        var newStr = ''
        for (var i = str.length - 1; i >= 0; i--) {   //从后往前遍历字符串,在拼接起来
            newStr = newStr + str[i]
        }
        console.log(newStr)
        // 替换字符串
        // function testReplace() {
        //     var str = 'abcedfdMMefallMMaefeafMMopqrst' // => abcedfd**efall**aefeaf**opqrst
        //     var newStr = str.split('MM')
        //     var newStr = newStr.join('**')
        //     console.log(newStr)
        // }
        // testReplace()
        var str = 'abcedfdMMefallMMaefeafMMopqrst'
        while (str.indexOf('MM') != -1) {    //找到MM,把MM替换成**
            str = str.replace('MM', '**')
        }
        console.log(str)
        // 字符串分割
        function testSplit() {
            var str = 'javascript-html-css' // => ['javascript','css','html']
            var str = str.split('-')
            console.log(str)
        }
        testSplit()
        //   不使用split的情况
        var str = 'javascript-html-css'
        var str1 = '' //拼接的字符串
        var arr = [] //用来装分割后的字符串
        for (var i = 0; i < str.length; i++) {
            var chars = str.charAt(i)   //拿到字符串中的字符
            if (chars != '-') {
                str1 = str1 + chars
            } else {
                if (str1 != '') {
                    arr.push(str1)
                    str1 = ''
                }
            }
            if (i == str.length - 1 && str1 != '') {
                arr.push(str1)
                str1 = ''
            }
        }
        console.log(arr)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值