当前位置: 首页 > article >正文

关于HarmonyOS的学习

day19

一、review

1.filter()返回满足条件的数组元,会把数组元素放在一个新的数组里面返回,也可以返回多个满足条件的数组元素(结果:数组) filter()返回满足条件的数组元,直接返回是满足条件当前的数组元素。只能返回满足第一个数组元素(结果:数组元素) includes() 字符串、数组都能使用,如果有满足条件的直接返回true,不满足返回false(结果:布尔值)

2.直接给空字符串去进行查找,相当于让它没有条件进行查找,因此直接返回原来的数据 console.log(item.title.includes('')

如果传递参数为空字符串那么它什么都不会做 console.log('abc'.includes(''))

二、子字符串

包含在一个字符串里面的字符,规定了每一个字符串里面都默认存在一个空白字符串作为子字符串。如果没有任何其他的字符串的时候,就会把空字符串作为字符串。如果有其他字符的情况下,空字符串默认也是存在的,只是看不到而已。

三、把查询字符串转为对象

    var queryStr = 'https://www.baidu.com?username=zhangsan&password=123'
    function transiformationObj(url){
        var str = url.split('?')[1]
        var arr = str.split('&')
        var obj = {}
        arr.forEach(function(item){
            var newStr = item.split('=')
            obj[newStr[0]] = newStr[1]
        })
        return obj
    }
    console.log(transiformationObj(queryStr))

四、副本问题

    // forEach() 里面的item问题
    var arr = [10, 3, 6]
    // item只是对数组元素进行了复制,可以把它当成副本。并不是真正的数组元素,所以你改变不了
    arr.forEach(function(item, index){
        // item *= 1.3
        arr[index] *= 1.3
    })
    console.log(arr)

五、把对象转为查询字符串

    // 把对象转成查询字符串
    var obj = {
        username: 'zhangsan',
        password: '123'
    }
    // 声明一个空的字符串
    var str = '?'
    // 遍历对象
    for(var key in obj){
        str += key + '=' + obj[key] 
        str += '&'
    }
    str = str.slice(0, -1)
    console.log(str)

六、判断数组中是否有num这个元素,返回布尔类型

    var num = prompt('请输入一个数字?')
    var arr = [1, 3, 6]
    function isNum(arr, num){
        for(var i=0; i<arr.length; i++){
            if(arr[i] == num){
                return true
            }
        }
        return false
    }
    var result = isNum(arr, num)
    console.log(result)

七、计算下标为奇数的平均数

    var arr = [2, 4, 8, 3, 7, 6, 9]
    var sum = 0
    var count = 0
    for(var i=0; i<arr.length; i++){
        if(i%2!=0){
            sum += arr[i]
            count++
        }
    }
    console.log(sum/count)

八、统计字符串的个数

    // var str = 'aaabbcccddffjkkadhfsseagugfbgdmfsvcvfed'
    // 思路:把字符串里面的字符当成对象的键,把个数当成值
    // 声明一个空对象
    // var obj = {a: 1}
​
    // 问题1:怎么把字符串里面的字符取出来?语法:str[0] 或者 str.charAt(0)
    // console.log(str[0])
​
    // 问题2:怎么把字符串里面取出来的字符设置给对象呢?语法:obj[str[0]]
    // obj[str[0]] = 1
    // console.log(obj)
​
    // 问题3:怎么把对象里面的属性值自增呢?语法:obj['a']++ 或者 obj[str[0]]++
    // obj['a']++
    // obj[str[0]] = 1
    // obj[str[0]]++
​
    // 问题4:怎么判断一个对象里面是否存在这个属性呢?语法:获取这个属性,如果拿到值就说明有,如果返回的是undefined就说明没有
    // console.log(obj['a']) // undefined
    // console.log(obj['a']) // 1
    // if(obj['a']){
    //     obj['a']++
    // }else{
    //     obj['a'] = 1
    // }
    // console.log(obj)
​
    // 问题5:发现字符串里面很多字符,咱们不可能一个一个去添加?可以直接使用遍历
    var str = 'aaabbcccddffjkkadhfsseagugfbgdmfsvcvfed'
    var obj = {}
    for(var i=0; i<str.length; i++){
        // 第一次循环:obj[str[0]] --- obj['a']
        // 第二次循环:obj[str[1]] --- obj['a'],满足条件,进入判断体里面把之前的1自增为2
        // 第三次循环:obj[str[2]] --- obj['a'],满足条件,进入判断体里面把之前的2自增为3
        // ...
        if(obj[str[i]]){
            obj[str[i]]++
        }else{
            obj[str[i]] = 1
        }
    }
    console.log(obj)

九、this对象

        + 官方概念
          => this指的是函数执行上下文对象
        + 什么是函数执行上下
          => 指的是函数的执行环境
          => 函数的执行会根据不同的情况出现不同的结果
        + 函数调用方式
          => 函数名加括号
          => 事件调用
          => 对象打点调用 例如:obj.say()
          => ...
        + this具体指的是哪个对象,要根据函数的不同的调用方式来决定
        + this是一个动态对象
        + this指向规则
          => 函数名称加括号调用函数,函数(函数执行上下文)里面的this指向的是window
          => 在全局作用域(全局执行上下文)里面查看this,指向的也是window
          => 对象打点调用函数,函数里面的this指向的是对象本身
          => 事件调用函数时,函数里面的this指向的是当前的事件调用者(那个元素触发的事件,this就是那个元素)
        window
        + window是js里面最大的对象,可以理解为是”boss“
        + 咱们平时声明的变量和定义的函数默认都会放在(挂载)window对象里面
        + 由于window是最大的一个对象,因此平时写代码的时候可以省略不写
        + 注意点
          => 变量的名称不要使用name或者top,top也属于关键字或者理解为保留字的东西,打印出来就是window对象

注意点:top也属于关键字,打印出来是window对象

name默认值是一个空字符串,属于window的一个名称,但是没有给设置名称所以默认就是空字符串,实际没有必要添加

十、js代码执行机制

        + js是一个单线程的语言,所谓的单线程就是一次只能做一件事情。为什么设计成单线程呢?因为效率高
        + 为了解决单线程的问题,提出一个异步执行机制
        + 把代码执行进行了分类
          => 同步,做完前面一件事情,再做后面的一件事情
          => 异步,两件事情可以同时进行
        + 同步代码
          => 循环
          => 其他的代码都属于
        + 异步代码
          => 事件
          => ajax
          => 定时器、延时器
          => ...
​
        问题:
        + 循环里面有事件处理函数,当点击按钮触发事件的时候,事件处理函数里面拿不到循环每次遍历i的值
        原因:
        + 当循环里面有事件处理函数时,代码会先把循环执行完毕后,再去执行事件处理函数里面的内容
        解决方案
        + 使用this
    */
    // for循环属于同步代码
    for(var i=0; i<aBtn.length; i++){
        // 事件属于异步代码
        aBtn[i].onclick = function(){
            // aBtn[i].style.backgroundColor = 'hotpink' // 报错
            // 注意点:事件调用函数时,函数里面的this指向的是当前的事件调用者(那个元素触发的事件,this就是那个元素)
            // console.log(this)
            // 需求2:当点击当前按钮的时候,其他按钮的背景颜色要取消
            this.style.backgroundColor = 'hotpink'
        }
    }

http://www.kler.cn/news/290868.html

相关文章:

  • 3.js - Water2不显示水波纹
  • k8s调度、污点、容忍、不可调度、排水、数据卷挂载
  • Flux【大模型】【写实模型】:人脸特美画质细腻意境优美的真境写实摄影FluxAura 大模型
  • 测试 UDP 端口可达性的方法
  • 图文解析保姆级教程:Postman专业接口测试工具的安装和基本使用
  • Linux 进程概念 进程状态 fock函数讲解
  • Object-Android关键字,伴生对象,Kotlin静态
  • SOA通信中间件介绍(二)
  • 海康威视 嵌入式 面经 海康威视嵌入式软件 嵌入式硬件总结面试经验 面试题目汇总
  • 经验笔记:容器化
  • livekitAI对话实践(python+next)
  • Java-互斥锁死锁释放锁
  • STM32G474之TIM1更新中断
  • 【JAVA GC垃圾回收器】JAVA GC垃圾回收算法,垃圾回收器,垃圾回收策略总结,可达性分析算法,分代垃圾回收
  • 探究 Eureka 在 Spring Boot 中的配置注入与统一管理机制(下)——第四节
  • (四)vForm 动态表单自定义组件、属性
  • 002.Python爬虫系列_初识协议
  • Netty从入门到超神-NIO 三大核心(selector,channel,buffer)(二)
  • 数学基础 -- 线性代数之向量空间
  • 探究 Eureka 在 Spring Boot 中的配置注入与统一管理机制(下)——第五节
  • guava中对Map的扩展数据结构
  • Vue输入框模糊搜索的多种写法
  • Docker中的容器内部无法使用vi命令怎么办?
  • MySQL自动安装脚本8.0和5.0均可
  • SD-WAN组网:定义与部署步骤解析
  • AI绘画SD中如何安装/更新/卸载 Stable Diffusion WebUI 插件?SD新手必看的保姆级教程!
  • 使用 Cloudflare R2 代替 AWS S3……
  • Day15_0.1基础学习MATLAB学习小技巧总结(15)——字符矩阵
  • Python批量分割Excel后逐行做差、合并文件的方法
  • Redisson的几种锁的通俗说明