7、字符串等

102 阅读4分钟

模板字符串

ES2015前,字符串拼接使用引号'', 但在换行操作和输出变量值时不方便,ES2015后, 字符串拼接使用反引号 ``(tab键上面) ,引用变量时可以使用 ${变量名}

  1. 模板字符串

       var str = 'hello'
       var str = "hello"
       var str = `hello`   模板字符串
           模板语法  `${变量}`
                     ${简单运算}
    
  2. 作用

       2.1字符串拼接
       2.2换行不用连接符
     // 2.1字符串拼接 输出a+b=c
       function test2(){
           var a = 10
           var b = 20
           var c = a + '+' + b + ' = '+ (a+b)
           console.log(c)
       }
       // test2()
       function test3(){
           var a = 10
           var b = 20
           var c = `${a}+${b}=${a+b}` //比test2更具可读性
           console.log(c)
       }
    

3.练习

    /*js编程实现学生表格显示
    1. 静态表格
    2. javscript代码显示静态表格
    3. 学生数据与表格关联 */
    <style>
    table { width: 1200px; margin: 50px auto; } 
    table tr { text-align: center; line-height: 40px; } 
    table th, tr, td { border-bottom: 1px dotted gray; } 
    </style>
    var students = [
			{ number: 1001, name: 'jack', score: 98, gender: '男' },
			{ number: 1002, name: 'rose', score: 95, gender: '女' },
			{ number: 1003, name: '小丽', score: 85, gender: '女' },
			{ number: 1004, name: 'tom', score: 88, gender: '男' },
		]
    // 法一
    /*   var tr = ''
      students.forEach(function(students) {
          tr = tr + `<tr>
          <td>${students.number}</td>
          <td>${students.name}</td>
          <td>${students.score}</td>
          <td>${students.gender}</td>
          </tr>
          `
      })
      var str = '<table>' + tr + '</table>'
      document.write(str) */
    // 法二
    var trArr = students.map(function (students) {
        return `<tr>
                    <td>${students.number}</td>
                    <td>${students.name}</td>
                    <td>${students.score}</td>
                    <td>${students.gender}</td>
                </tr>`
    })
    var str=trArr.join('')
    document.write('<table>'+str+'</table>') 

严格模式

不严格体现

  1. 变量不声明也能使用
  2. 函数形能可以重复

开启严格模式 :'use strict'

<script>
    'use strict'  // 开启严格模式
    // var num  //定义变量
    num = 100 //使用变量 给变量赋值
    console.log('num ',num)
    function fun(m,m){
        console.log('m ',m, ' m ',m)
    }
    fun(100,200)
</script>

字符串字节长度

/*
      编写一个方法,求一个字符串的字节长度。 一个英文字符占用一个字节,一个中文字符占用两个字节
        提示:中文字符unicode编码大于255
             字符unicode编码
                 str.charCodeAt(0)

        如 'jt编程实现学生表格显示'
          分析:
              初始化统计字节个数变量 count=0
              循环遍历字符串
                 判断当前字符unicode编码是否大于255
                     如果大于 count += 2 
                     如果小于 count += 1  
     // 法一
    */
		var str = 'javascript编程实现学生表格显示'
		var count = 0 // 统计字节个数
		for (var i = 0; i < str.length; i++) {
            if(str.charCodeAt(i) > 255){
                count += 2
            }else{
                count += 1
            }
        }
        document.write('字符串中字节个数是 '+count)
    // 法二
     function testCharcode() {
        var str = 'js编程实现学生表格显示'
        var n = str.length
        var bytes = n
        for (var i = 0; i < n; i++) {
            if (str.charCodeAt(i) > 255)
                bytes++
        }
        console.log('bytes为', bytes);
    }
    testCharcode()

统计字符个数

    /*
        统计字符串中不同字符的出现次数?
           'abcdefabcadefkmmkggcc'
        1. 定义一个空对象存储字符出现次数,属性名是字符,属性值对应字符出现次数 {a:2,b:3...}
        2. var obj = {}
           obj.a = 1    {a:1}
           obj.b = 1
        3. 循环遍字符串
               判断obj对象中是否已经有该字符
                  如果有值加一
                  如没有,作为新属性添加,值赋值为1
    */ 
    function getCountString() {
			var str = 'abcdefabcadefkmmkggcc'
			var obj = {} //存储各个字符出现次数
			// 循环遍历字符串
			for (var i = 0; i < str.length; i++) {
				var chars = str.charAt(i) // a
				// 判断obj对象中是否已经有该字符
				// 当对象属性是变量时,通过中括号访问
				if (obj[chars]) {
					obj[chars]++
				} else {
					obj[chars] = 1
				}
			}
            // 遍历对象for-in
            for(var key in obj){
                console.log('key: ',key +  '  value : ',obj[key])
            }
		}
        getCountString()

数学对象Math

javascript内置对象
        1. 对象做什么的,有什么功能?
            Object对象
                存储名称值对的集合
            
            Array数组
                存储一系列有序数据的集合

            String 字符串对象

        2. 创建方式
                var obj = new Object()
                var obj = {name:'jack',age:18}
                obj.name = 'jack'  
                
                
                var arr = new Array()
                var arr = [10,20,30]
                arr.length
                
        3. 属性
              length
        4. 方法
      Math 数学对象
       1. 处理数学问题
       2. 创建方式
            不需要使用构造函数创建,它比较特殊直接使用就可以,像这样的对象称为类对象
            Math.方法()
       3. 方法
           random 随机数
           ceil  向上取整
           floor 向下取整
           round 四舍五入
            abs
            max
            min
            ...
    function test1(){
        var r = Math.random() // 0 ~ 1 (包含0不包含1)
        document.write(r)
    }

    function test2(){
        var num = 10.4
        // var num1 = Math.ceil(num)    // 向上取整
        // var num1 = Math.floor(num)   // 向下取整
        var num1 = Math.round(num)      // 四舍五入取整
        document.write(num1)
    }
    // test2()
    function test3(){
        var num = -9
        var num1 = Math.abs(num)        // 取绝对值
        document.write(num1)
    }
    // test3()
    function test4(){
        // var m = Math.max(34,56,78,65,98)   // 取最大值
        var m = Math.min(34,56,78,65,98)      // 取最小值 
        document.write(m)
    }
    test4()

示例

      1、  生成100000~10随机数,统计每个随机数出现次数
           分析: 
            1. 0~10随机数
                Math.random()   0~1
               Math.random() * 10
            2. 循环100003. 统计每个随机数出现次数
                {
                    5:109,
                    3:789,
                    6:187
                    ...
                }
    function getRandomCount(){
        var obj ={}  //记录随机数出现次数, 名称:随机数  值: 次数
        for(var i=0;i<10000;i++){
            var r=Math.round(Math.random()*10)  //[0,10]
            if(obj[r]){
                obj[r]++
            }else{
                obj[r]=1
            }
        }
        console.log(obj);
    }
    getRandomCount()
2、生成m到n之间的随机数
    /*  0~10    Math.floor(Math.random()*10)  
    10~20   Math.floor(Math.random()*10 + 10)  
    20~30   Math.floor(Math.random()*10 + 20)  
    30~50   Math.floor(Math.random()*20 + 30)
    50~80   Math.floor(Math.random()*30 + 50)  
       ....
    m~n     Math.floor(Math.random()*(n-m) + m)  */ 
    /*
      返回m到n之间的随机数
    */
    function getRandom(x,y){
        var n=Math.max(x,y)
        var m=Math.min(x,y)
        return Math.floor(Math.random()*(n-m)+m)
    }
    var r=getRandom(40,15)
    document.write(r)