js------选择排序,数组去重,字符串的常用方法分享!

选择排序:

思想:

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

    2.每次排序,在未排序中找最小数下标,与前面的数交换位置

 <script>
        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]
                    minIndex = j       //minIndex:2,3

                }
            }
            console.log('最小下标', minIndex)

             //交换位置
            var temp = arr[i]
            arr[i] = arr[minIndex]
            arr[minIndex] = temp
            console.log(arr)

        }
        console.log(arr)

    </script>

数组去重

这里介绍三种

  <script>
        var arr = [9, 2, 5, 2, 8, 2, 5]

        var newArr = [] //1.存储去重后元素
        // 2. 遍历原数组
        for (var i = 0; i < arr.length; i++) {
            // 3. 判断新数组中是否有原数组当前元素,如果没有,存储到新数组中
            // if(newArr.indexOf(arr[i]) == -1){
            //     newArr.push(arr[i])
            // } 
            // if(newArr.includes(arr[i]) == false){
            if (!newArr.includes(arr[i])) {
                newArr.push(arr[i])
            }
        }
        console.log(newArr)






//用set去重,代码最为简洁
        function newArr(arr) {
            return Array.from(new Set(arr))
        }
        var arr = [9, 2, 5, 2, 8, 2, 5]
        console.log(newArr(arr))




//双层for循环+Splice
// 外层循环数据遍历所有元素,内层循环依次判断后面元素是否与外层相同,如果同则截取掉
  

function test3(){
    var arr = [9, 2, 5, 2, 8, 2, 5]
    for(var i=0;i<arr.length;i++){
        var item=arr[i]

        for(var j=i+1;j<arr.length;j++){
            if(item==arr[j]){
                arr.splice(j,1)
            //   考虑三个相同的元素连着
                j--

            }
        }
       
    }
    console.log(arr)

}
test3()

    </script>

 例题:对一组学生的百分制成绩[98,78,89,77,69,59,85,100,93,81], 分别统计出100分、90~99分、80~89分、…0~9分的人数。



        function getNumberByScore() {
				var stuScores = [98, 78, 89, 77, 69, 59, 85, 100, 93, 81]
				//定义一个存储各分数段人数的数组长度为11,初始值为0
				var num = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

				for (var i = 0; i < stuScores.length; i++) {
					var score = parseInt(stuScores[i] / 10) // 9
                    num[score]++
			
				}

				for (var j = 0; j < num.length; j++) {
					if (j == 10) {
						console.log('100分人数 ' + num[j])
					} else {
						console.log(j * 10 + '-' + ((j + 1) * 10 - 1) + '分人数 ' + num[j])
					}
				}
			}
			getNumberByScore()

字符串:

1.创建字符串

字面量方式创建:

var str='hello'

console.log(str)

构造函数方式:

var str= new string ('hello')

console.log(str)

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

3.访问字符串字符 console.log(srt[0]),注意字符串只能访问同,不能该变和赋值。

4.length字符串长度

5.字符口串的遍历

for(var i=0;i<str,length;l++){

console.log(str.length)

}

6.基本数据类型,复杂数据类型(对象类型)

属性和方法

通过点语句调用:

当使用.语句调用属性和方法时,自动转换为复杂数据类型,使用完后会转为基本数据类型,t称为包装类型:

var str='hello'

基本数据类型      ------>            复杂数据类:(字符串对象)

                       string.lenth

字符串常用方法: 

假如:var str='hello'

charAt:根据下标返回字符     

 console.log('charAt:',str.charAt (0))

indexOf :返回字符在字符串的下标,不存在则返回-1 

 console.log('indexOf: ', str.indexOf (e))

substring:(从哪个索引开始,到哪个索引结束) 

包含开始索引,不包括结束的索引位置!!!

 console.log('substing: ',str.substing(1,3))-->el

substr:用来截取字符串,语法:substr(从哪个索引开始,截取多少个) 

 var newstr=str.substr(1,3)

replace:(原字符串,新字符串)用于在字符串中用新字符替换原字符

var newstr=str.replace('hello','hi')

console.log('newstr:' ,newstr)

split(‘分隔字符’),返回数组

function testSplit(){

var str='javascript-css-html'

var arr=str.split('-')

console.log(arr)

}

testSplit()

打印输出:【'javascript‘,’css‘,’html' 】

 concat:字符串拼接

var str='hello'

var newStr=str.concat('world')

console.log('newStr',newStr)

trim():去掉字符两端的空白,返回去掉空格的新字符串

var str='     jack    '

console.log('str  :', str.length)

var newStr=str.trim()

console.log('newStr: ',newStr.length)

 startsWith():判断字符串是否以字符开始,返回true||false

     function testStartsWith(){
            var str='hello'
            var isOk=str.startsWith('he')
            console.log('isok',isOk)
        }
        testStartsWith()

endsWith():判断字符串是否以字符j结束,返回true||false 

       function testEndsWith(){
            var str='adfnkajlhf'
            var isOk=str.endsWith('f')
            console.log('isok',isOk)
        }
        testEndsWith()

 toLowerCase:把字符串转为小写


        function testLowerCase(){
         var str='HELLO'
         var newStr=str.toLocaleLowerCase()
         console.log(newStr)
        }
        testLowerCase()

 toUpperCase把字符串转为大写

     function testLowerCase(){
         var str='hello'
         var newStr=str.toLocaleUpperCase()
         console.log(newStr)
        }
        testLowerCase()

练习一:把字符串‘abcdefg’===>字符串'gfedcba'

思考:数组有反转函数,但是字符串没有,所以要先转化为数组,再通过数组转化为字符串
<script>
   var str='abcdefg'
   var arr=str.split('')
   var newArr=arr.reverse()
   var newStr=newArr.join('')
console.log('newsStr:',newsStr)
</script>
        // 方案二:
        // 倒序输出字符串,拼接字符串

          var str='abcdefg'
          var s=''
         for(var i=str.length-1;i>=0;i--){
               s+=str[i]
          }
         console.log( 's:',s)

 

练习二: 已知字符串 'abcefMMaveqeripMMaeererMMda'  替换大字MM为*号

var str='abcefMMaveqeripMMaeererMMda'
while(str.indexOf('MM')!==-1 ){
str=str.replace('***')
}
console.log('str',str)

练习三:'html-css-javascript'=>['html','css','javascript'] 

function chatAtTest()
var str = 'html-css-javascript'
var line=' '
var arr=[]

for(var i=0;i<str.length;i++) {
   var chars= chatAt(i)
       if(chars!='-')
     {
        line=line+chars
             }
       else{
        if( line !=' ')
        arr.push(line)
        line=' '
             }
     
        }

    if(i=str.length-1&&line!=''){
        arr.push(line)
        line=' '
    }
}
console.log(arr)
}
chatAtTest()

如有错误,请指正!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值