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()

如有错误,请指正!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340