选择排序,字符串常用的方法、数组去重

        ·        一、选择排序思想

    1.n个数进行排序,进行n-1次选择

     2.每次选择

             未排序数中找最小数下标,与前面的数交换位置

    <script>
//              0    1  2    3   4
     var arr = [89, 98, 78, 68, 76]
     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]){//arr[2]<arr[1]    arr[3]<arr[2]   arr[4]<arr[3] 
            minIndex=j           //minIndex:2        minIndex:3       minIndex:3
            
        }

     }
    //  console.log("最小数下标:",minIndex);
    //  交换位置
     var temp=arr[i]
     arr[i]=arr[minIndex]
     arr[minIndex]=temp 
     console.log("第"+(i+1)+"次",arr)


    }
    console.log(arr)
    </script>
    

二、数组去重

 [9,2,5,2,8,2,5]->[9,2,5,8]

方法一:

利用indexOf或includes实现

   1.定义一个空数组[]用于去重后的元素

   2 .遍历原数组

方法一:

   <script>
        var arr = [9, 2, 5, 2, 8, 2, 5]
        function testIndexOf() {
            var newArr = []
            for (var i = 0; i < arr.length; i++) {
                // 判断新数组中是否有原数组当前元素,如果没有,存储到新数组中
                // if(newArr.indexOf(9)==-1){
                //     newArr.push(arr[i])
                // }if(newArr.includes(arr[i])==false){
                //     newArr.push(arr[i])
                // }
                if (!newArr.includes(arr[i])) {
                    newArr.push(arr[i])
                }
            }

            console.log(newArr)
        }
      testIndexOf()
   </script>

方法二 :

<script>

function test2() {

            var arr = [9, 2, 5, 2, 8, 2, 5]
            var newArr = []
            arr.forEach(function (item) {
                if (newArr.indexOf(item) == -1) {
                    newArr.push(item)
                }
            })
            console.log(newArr)

        } 
        test2()
<script>

方法三:

利用双重for循环+splice实现

             外层循环遍历数组的所有元素

                内层循环依次判断后面元素是否与外层元素相同,如果相同,截取

 <script>    
    function test3(){
            var arr = [2, 2, 2,5, 2, 8, 2, 5]
            //         0   1 2  3  4 5

            //        [2, 2,2,5, 2, 8, 2, 5]
            for(var i=0;i<arr.length;i++){
                for(var j=i+1;j<arr.length;j++){
                    if(arr[i]==arr[j]){
                        arr.splice(j,1)
                        j--
                    }
                }
            }
            console.log(arr)
        }
        test3()

    </script>

三、字符串   

    数据类型

           基本数据类型

           1.创建字符串对象

              straing

              var str="helloworld"

              var obj={}               //字面量

              var obj=new Object()     //构造函数方式

              var arr=[]               //字面量

              var arr=new Arry()       //构造函数方式

   <script>
        var str="hellworld"
        console.log(str)
         var str1=new String("hellworld")
         console.log(str1)
    </script>

输出:hellworld

           String {'hellworld'}

            2.字符串是由一系列字符构成,每个字符对应自己的下标,和数组类似,从0开始

               hellworld

               012345678

            3.访问字符串字符

              str[0]

              不能赋值  str[0]="k"

            4.length字符串长度

<script>
        var str="hellworld"
        console.log("str[0]",str[0])

</script>
//输出:str[0] h


        
    

            5.字符串遍历

<script>
 var str="hellworld"
 for(var i=0;i<str.length;i++){
          console.log(str[i])

        }
</script>
//输出:
h
e
l
w
o
r
l
d

            6.字符串

               基本数据类型

               复杂数据类型(对象类型)

                  属性方法

                  通过点语句调用

                var str="helloworld"

                str.length

                当使用点语句调用属性方法时,自动转为复杂数据类型,使用完之后又转为基本的数据类型,包装类型(面试)

                var str="helloworld"

                 

                基本数据类型              复杂数据类型

                string         ->         String

                               str.length


 

                number         ->         Number

                89.888                    num.toFixed(2)

                boolean                    Boolean

            7.常用方法

              charat

                  =>通过下标返回字符

<script> 

        var str="hellworld"
        console.log("str.charat(0)",str.charat(0))
        console.log(str.length)
</script>
//输出:str.charat(0) h
         9

              indexOf

                  =>返回字符在字符串中的下标

                  =>如果字符不存在,返回-1

              lastIndexOf

                =>

<script> 

        var str="hellworld"
         console.log("str.indexOf:",str.indexOf("l"))
        console.log("str.lastIndexOf:",str.lastIndexOf("l"))
</script> 

              substring     slice

                =>开始下标,结束下标(不包)

<script> 

        var str="hellworld"
          console.log("substring",str.substring(1,3))
        var arr=["h","e","l","l","o","w","o","r","l","d"]
        var newArr=arr.slice(1,3)
        console.log("newArr:",newArr)
</script>

              substr        splice

                =>开始下标,元素个数

<script> 

        var str="hellworld"
 console.log("substr:",str.substr(1,3))
        var newArr1=arr.splice(1,3)
        console.log("splice:",arr,"newArr1",newArr1)
</script>

四、字符串常用的方法

 <script>

        // ======replace:用于在字符串中用一些字符替换另一些字符=========
        function testReplace() {
            var str = "helloworld"
            var newStr = str.replace("helloworld", "javaScript")//把javascript换成hellworld
            console.log("newStr:", newStr);//=>newStr: javaScript
        }
        // testReplace() 
        //=======split :分割字符串,将分割之后的字符存入数组返回=========== 
        function testSplit() {
            var str = "javascript-css-html"
            var arr = str.split("-")//有"-"就进行分割
            console.log(arr)//=>['javascript', 'css', 'html']

        }
        // testSplit()
        function testSplitTwo() {
            var str = "javascriptMMcssMMhtml"
            var arr = str.split("MM")//有"MM"就进行分割
            console.log(arr)// ['javascript', 'css', 'html']

        }
        // testSplitTwo()
        function testSplitThree() {
            var str = "javascript"
            var arr = str.split("")//单个输出
            console.log(arr)//['j', 'a', 'v', 'a', 's', 'c', 'r', 'i', 'p', 't']



        }
        // testSplitThree()


        //  concat(): 连接两个字符串,返回连接之后的字符串
        function testConcat() {
            var str = "hello"
            var newStr = str.concat('world')//连接两个字符串
            console.log(newStr)//helloworld
        }
        // testConcat()


        /* 
        trim()
        => 方法删除字符串两端的空白符
             => 返回去掉空格的新字符
        */
        function testTrim() {
            var str = "  jack  "
            console.log("str:", str.length)
            var newStr = str.trim()
            console.log("newStr:", newStr.length)//str: 8   newStr: 4
        }
        // testTrim()

        // 
        function testStartsWith() {
            var str = "hellworld"
            var isOk = str.startsWith("hello")
            console.log("isOk", isOk)   //isOk false

        }
        // testStartsWith()


        // 判断URL地址是以什么开头的
        function testStartsWithTwo() {
            var url = 'http://www.qianfeng.com'
            var isOk = url.startsWith('http')
            console.log('isOk ', isOk)//isOk  true

        }
        // testStartsWithTwo() 
        


        //判URL地址以什么结尾的
        function testEndsWith() {
            var url = 'http://www.qianfeng.com'
            var isOk = url.endsWith('.cn')
            console.log('isOk ', isOk);//isOk  false

        }
        // testEndsWith()

        // 小写转大写
        function testLowerCase() {
            // var str = 'HELLO'
            var str = 'div'
            // var newStr = str.toLowerCase()
            var newStr = str.toupperCase()
            console.log(newStr)//DIV
        }
        testLowerCase()
    </script>

五、字符串案例

1.反转字符

          分析:"abcdefg"=>"gfedcba"

          ["a","b","c","d","e","f","g"]

          字符串=>数组

          "abcdefg"=> ["a","b","c","d","e","f","g"]

          数组=>字符串

          arr.join("")

          方法2:

            倒序输出字符

            拼接字符串

<script>
 function testReverse() {
            var str = "abcdefg"
            var newArr = str.split("")//将str转换成数组
            var newStr = newArr.reverse()//在将数组反转
            var newLastStr = newStr.join()//将反转之后的数组连接起来
            console.log(newLastStr)   //g,f,e,d,c,b,a


        }
testReverse()
 function testReverseTwo() {
            var str = "abcdefg"
            var newStr = ""
            for (var i = str.length - 1; i >= 0; i--) {
                console.log(str[i])
                newStr = newStr + str[i]
            }
            console.log(newStr)//g,f,e,d,c,b,a

        }
         testReverseTwo()
</script>

    2.替换字符

           应用:敏感词忽略

      已知字符串 'abcefMMaveqeripMMaeererMMda'  替换大字MM为*号   'abcef**aveqeriP**aeerer**da'

    <script> 
 function testReplace() {
            var str = 'abcefMMaveqeripMMaeererMMda'
            while (str.indexOf("MM") !== -1) {
                str = str.replace("MM", "**")//只替换其中一个

            }

            console.log("newStr", str)
        }
         testReplace()



        function testReplaceTwo() {
				var str = 'abcedfdMMefallMMaefeafMMopqrst' // => abcedfd**efall**aefeaf**opqrst
				var newStr = str.split('MM') // ['abcedfd','efall','aefeaf','opqrst']
				var newStr1 = newStr.join('**') // 'abcedfd**efall**aefeaf**opqrst'
				console.log(newStr1)
			}
			 testReplaceTwo()
</script>  

   3.字符串分割,不使用split 

            思路

            初始化空数组

            初始化空字符串

               循环遍历字符串

                 判断字符是否是"-"

                 如果不是"-"

                     拼接字符串  "" ->"javascript"

                  如果是“-”

                     将拼接的字符串  存储到数组中

                     重置拼接字符

<script>
function testSplit() {
            var str = 'html-css-javascript'
            var line = ""//初始化空字符串
            var arr = [] //初始化空数组
            for (var i = 0; i < str.length; i++) {//循环遍历字符串
                var chars = str.charat(i)
                if (chars != "-") {//判断字符是否是"-"
                    line = line + chars

                } else {
                    if (line != '') {
                        arr.push(line)
                        line = ""
                    }
                } if (i == str.length - 1 && line != "") {  //line != ""才将JavaScript放入arr数组中
                    arr.push(line)
                    line = ""
                }
            }
            console.log(arr)


        }
        testSplit()
 

</script>

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...