【vue2】vue框架学习前置必备基础知识

news2024/11/15 11:58:55

1d43f75f092a4050a8ce31e2d85f6868.gif

🥳博       主:初映CY的前说(前端领域)

🌞个人信条:想要变成得到,中间还有做到!

🤘本文核心:数组 | 字符串中常用方法、对象解构语法、function |箭头函数this指向、展开运算符、原型链、本地存储

目录

一、数组常用方法

1.数组增删改查

1.push()

 2.unshift()

3.shift()

4.pop()

 5.splice()

 6.join()

 7.reverse()

2.数组遍历

 1.map()

 2.filter()

 4.some()

 5.every()

 6.findindex()

 7.reduce()

 三.结构赋值语法

四、function函数与箭头函数区别

五、展开运算符

六、原型对象

七、本地存储


一、数组常用方法

1.数组增删改查

1.push()

arr.push(...元素) : 往数组后面添加元素 , 返回数组长度

        // arr.push(...元素) : 往数组后面添加元素 , 返回数组长度 
        let arr = [10, 20, 30, 40, 50]
        let res = arr.push(60, 70, 80)
        console.log(arr)//[10,20,30,40,50,60,70,80]
        console.log(res)//8

 2.unshift()

arr.unshift(...元素) : 往数组前面添加元素 , 返回数组长度

        // arr.unshift(...元素) : 往数组前面添加元素 , 返回数组长度
        let arr = [10, 20, 30, 40, 50]
        let res = arr.unshift(60, 70, 80)
        console.log(arr)// [60, 70, 80, 10, 20, 30, 40, 50]
        console.log(res)//8

3.shift()

shift() : 删除数组第一个元素, 返回删除的那个元素

        // arr.shift() : 删除数组第一个元素, 返回删除的那个元素
        let arr = [10, 20, 30, 40, 50]
        let res = arr.shift(2,1)
        console.log(arr)//[20,30, 40, 50]
        console.log(res)//[10]

4.pop()

arr.pop() : 删除数组最后一个元素, 返回删除的那个元素

        // arr.pop() : 删除数组最后一个元素, 返回删除的那个元素
        let arr = [10, 20, 30, 40, 50]
        let res = arr.pop()
        console.log(arr)//[20, 30, 40, 50]
        console.log(res)//10

 5.splice()

写法1

 arr.splice(开始下标,删除几个元素,...在删除位置插入元素)

      // arr.splice(开始下标,删除几个元素,...在删除位置插入元素)
        let arr = [10, 20, 30, 40, 50]
        let res = arr.splice(2,1,60)
        console.log(arr)//[10, 20, 60, 40, 50]
        console.log(res)//[30]

写法2

arr.splice(开始下标,删除几个元素)// 传递的形参有有三个,我们最后的形参可以省略不写

        // arr.splice(开始下标,删除几个元素)
        let arr = [10, 20, 30, 40, 50]
        let res = arr.splice(2,1)
        console.log(arr)//[10, 20, 40, 50]
        console.log(res)//[30]

 6.join()

arr.join('分隔符') : 把数组元素拼接成字符串

        let arr = [10, 20, 30, 40, 50]
       // 2. arr.join('分隔符') : 把数组元素拼接成字符串
        let str = arr.join('|')//10|20|30|40|50
        console.log(str)
        // join()应用场景 :   有的歌曲是合唱的,后台就会给一个数组 ['李宗盛','林忆莲']
        //页面按照UI的设计显示歌手 '李宗盛&林忆莲'
        console.log(['李宗盛', '林忆莲'].join('&'))//李宗盛&林忆莲

 7.reverse()

 arr.reverse() : 翻转数组

        //  arr.reverse() : 翻转数组
        let arr = [10, 20, 30, 40, 50]
        const res= arr.reverse()
        console.log(res);//[50, 40, 30, 20, 10]

 8.sort()

arr.sort( (a,b)=>排序规则 )

 1.升序(形参里面前者减去后者)

        let arr = [10, 80, 300, 40, 50]
        arr.sort( (a,b)=>a-b )
        console.log(arr); //[10, 40, 50, 80, 300]

 2.降序(形参里面后者减去前者)

 配合对象使用:

        let pArr = [
            { name: '张三', age: 18 },
            { name: '李四', age: 15 },
            { name: '王五', age: 22 },
        ]
        //根据年龄排序  a和b就是数组中相邻的元素
        pArr.sort((a, b) => {
            return a.age - b.age
        })
        console.log(pArr); 

2.数组遍历

数组遍历方法应用场景函数返回值是否需要return
map映射数组一个新数组

一定需要return

filter过滤数组一个新数组return true(元素添加到新数组)
forEach遍历数组
some找出符合条件的数布尔类型return true;循环结束
every                判断所有元素是否符合条件布尔类型return true;循环继续
findIndex

获取符合条件的第一个元素位置(下标)

数字return true;循环结束
includes判断数组/字符串是否包含某一个值布尔w

 1.map()

map会遍历每一个元素,并对每一个元素做对应的处理,返回一个新数组

        let arr = [23, 31, 60, 88, 90, 108, 260];
        //需求:数组中每一个元素+1
        let arr1 = arr.map((item, index) => {
            return item+ 1;//让每一个元素的值+1
        });
        console.log(arr1);//[24, 32, 61, 89, 91, 109, 261]

 2.filter()

filter用于筛选数组中满足条件的元素,返回筛选后的新数组

        let arr = [23, 31, 60, 88, 90, 108, 260];
        //找出数组中的偶数
        let arr1 = arr.filter((item) => {
            return item %2 == 0;
        });
        console.log(arr1);//[60, 88, 90, 108, 260]]

 3.forEach()

forEach用于遍历数组,相当于for循环另一种写法

        //  1.forEach用于遍历数组,相当于for循环另一种写法
        let arr = [23, 31, 60, 88, 90, 108, 260];
        arr.forEach((item,index) => {
            console.log(`下标为${index}的元素是${item}`); 
        });

 4.some()

用于判断数组中是否存在满足条件的元素,遇到满足的就返回,停止遍历

        /* 
        1.some应用场景:用于判断数组中是否存在满足条件的元素
        2.注意点:
            a. 回调函数执行次数  != 数组长度
                * some函数在遍历的时候可以中途结束
            b. some函数返回一个布尔类型值
            c. 回调函数返回布尔类型值用于结束遍历
                return true; //遍历结束,且some函数返回值为true
               (默认) return false; //遍历继续,且some函数返回值为false
         */

        //需求:判断数组中没有负数
        let arr = [23, 31, 60, 88,-50, 90, 108, 260];
        /**
        * @description: 数组some遍历
        * @param {Function}:回调函数 (元素,下标)=>{}
        * @return: 布尔类型值
        */
        let arr1 = arr.some((item,index) => {
            return item<0;//此处遇到-50就停止遍历喽
        });
        console.log(arr1);

 5.every()

every用于判断数组中是否所有元素都满足条件

        /* 
        1.every应用场景:用于判断数组中是否所有元素都满足条件
            * every与some功能类似,只是写法不同
        2.注意点:
            a. 回调函数执行次数  != 数组长度
            b. every函数返回一个布尔类型值
            c. 回调函数返回布尔类型值用于结束遍历
                return true; //遍历继续,且every函数返回值为true
                (默认)return false; //遍历结束,且every函数返回值为false
         */
        //需求:判断数组中没有负数
        let arr = [23, 31, 60, 88,-50, 90, 108, 260];
        /**
        * @description: 数组every遍历
        * @param {Function}:回调函数 (元素,下标)=>{}
        * @return: 布尔类型值
        */
        let arr1 = arr.every((item,index) => {
            console.log(`下标为${index}的元素是${item}`);
            return item>0;
            
        });
        console.log(arr1);

 6.findindex()

findindex用于获取符合条件的第一个元素位置(下标)

        /* 
        1.数组findIndex方法
            1.1 作用 : 获取符合条件的第一个元素位置(下标)
            1.2 语法 : arr.findIndex( (item,index)=>{ return true/false } )
                返回值: 符合则返回元素下标,不符合则返回-1
            1.3 应用场景 : 适用于数组中元素为对象类型,比传统for循环要高效
        */
        let arr1 = [
            { name: '张三', age: 20 },
            { name: '李四', age: 30 },
            { name: '王五', age: 25 },
            { name: '赵六', age: 1},
            { name: '小七', age: 33 },
        ];
        //1.数组findIndex方法 : 获取符合条件的第一个元素位置(下标)
        //示例:查找arr1中第一个未成年在什么位置
        let res1 = arr1.findIndex((item,index)=>{
            /* 回调函数
            return true : 循环中断,findIndex方法返回值为当前index值
            return false: 循环继续,如果数组全部遍历完还是没有返回true,则finedIndex方法最终返回-1
             */
            // if(item.age<18){
            //     return true;
            // }else{
            //     return false;
            // };
            return item.age < 18;
        });
        console.log(res1);

 7.reduce()

 reduce为每一个元素执行一次回调,并得到回调最终的结果

        /* 
        1. reduce作用: 为每一个元素执行一次回调,并得到回调最终的结果
        2. reduce语法:  数组.reduce( (sum,item,index)=>{} , sum初始值 )
            回调返回值: 下一次循环sum的结果
            reduce自身返回值: 最后一次sum的结果
        */

        let arr = [1, 2, 3, 4, 5]
        // 无条件求元素和,0是没有数据时候的初始值,当不写的到时候,如果数组为空就报错
        let res = arr.reduce((sum, item, index) => sum + item, 0)
        console.log(res)

        //需求:有条件求元素和(求数组中奇数的和)
        // 核心: 满足条件就与sum累加,不满足条件sum值不变
        let res1 = arr.reduce((sum, item, index) => {
            if (item % 2 === 1) {
                return sum + item//满足条件累加
            } else {
                //如果没有这个return, 下一次sum就会变成undefined
                return sum//不满足条件 sum值不变
            }
        }, 0)
        console.log(res1)

二、结构赋值语法

核心是获取我们想要的数据,不解构的数据自动丢弃。也可以对数据进行封装

script>
        /* 
        解构赋值: 变量赋值的简写语法
            (1)把对象的属性 赋值给 变量
            (2)把变量的值   赋值给 对象的属性
        */    
        /* 1. 把对象的属性 赋值给 变量 
        应用场景: 服务器返回的对象层级很多,通过解构简化代码
        */

        let obj = {
            name:'张三',
            age:20,
            gender:'女',
            student:{
                sex:'男'
            }
        }
        // 底层原理:当属性名与属性值相同的时候可以直接简写成属性名即可 比如:name:name 写一个name就可以,记住属性名称:自定义变量名称
        let { name,age:a,gender,student:{sex},} = obj
        console.log( name,a,sex,gender )

        /* 2.把变量的值   赋值给 对象的属性 
        应用场景: 后台接口post参数需要对象, 把变量的值包在对象里面发给服务器
        */
        let username = 'admin'
        let password = '123456'

        //ES6
        let body = {
            username,
            password,
        }
        console.log(body)

三、function函数与箭头函数this指向

      function函数和箭头函数最大区别 : this指向不同

function函数中this指向:

  • function函数this指向三种 : 谁调用我,我就指向谁
  • new 函数名() :  this  ->  new创建的实例对象
  • 对象名.函数名() : this  ->  对象
  • 函数名()  :  this -> window

箭头函数this指向

  • 箭头函数this指向 : 无this
  • 箭头函数this指向 : 上级作用域中的this

四、展开运算符

①用于将数据提取出想要的②封装数据给属性③浅拷贝开辟新的地址空间

  /* 
        1.展开运算符:  ...
            相当于数组/对象 遍历的简写
        2.展开运算符应用场景 :
            (1)H5端下拉刷新:  连接数组
            (2)连接对象 : 把两个盒子的数据 合成一个对象发给服务器
            (3)浅拷贝数据
        */
        //(1)连接数组
        let arr = [10,20,30]
        //服务器返回了一个新数组,添加到列表后面
        let arr1 = [40,50,60]
        arr.push(...arr1)
        console.log(arr)

        //(2)连接对象
        let obj = {
            username:'admin',
            password:'123456'
        }

        let form = {
            name:'张三',
            age:20,
            ...obj
        }

        console.log( form )

        //(3)浅拷贝数据
        /* 
        浅拷贝 : 浅拷贝拷贝地址,只拷贝一层
        深拷贝 : 深拷贝拷贝数据,拷贝多层
        */

        const person = {
            name:'王五',
            age:30,
            sex:'男',
            hobby:['学习','代码','干饭']
        }

        //浅拷贝 : 拷贝地址
        const person1 = person
        person1.name = '老六'
        console.log(person1,person)//{name: '老六', age: 30, sex: '男', hobby: Array(3)}

        //需求: 拷贝person的数据, 修改拷贝后的数据不影响
        /* 原理:只拷贝person第一层数据,相当于开辟一个全新的地址空间,因此数据不会发生覆盖(地址不同)
            }*/
 
        const person2 = { ...person }
        person2.name = '老铁'
        console.log(person2,person)

五、原型对象

   /*  vue会给自己的原型对象添加一些共有的成员(属性+方法) 
            所有的vm实例都可以直接使用. 
            一般情况下,vue原型中的成员都会有一个前缀$
        应用: 项目开发中,如果你希望每一个页面都可以使用这个属性,就可以把这个属性加到Vue原型中
        */

        // 1.构造函数
        function Person(name,age){
            //此处this指向的是Proson
            this.name = name
            this.age = age
        }    

        // 2.原型对象,写在这里的东西,我们在new出来的实例上面都能找到这个东西
        Person.prototype.eat = function(){
            console.log('吃东西')
        }
        Person.prototype.name = '我是初映'
        

        // 3.实例对象
        let p1 = new Person('张三',20)
        let p2 = new Person('李四',30)

        console.log(p1,p2)

六、本地存储

    常用于用于存储token,在我们登录的时候使用

  • 存: 常用于用户登录成功
  • 取: 发送ajax的时候取出来, 添加到请求头
  • 删: 退出登录

语法:

        存:  localStorage.setItem('属性名',属性值)
        取:  localStorage.getItem('属性名')
        删:  localStorage.removeItem('属性名')
        清空(删所有):  localStorage.clear()

        注意点: localStorage只能存储字符串,如果是引用类型则需要转JSON

        存: js转json -> 存储
            localStorage.setItem('属性名', JSON.stringify(对象) )
        取: 取出来 -> 解析json
            JSON.parse( localStorage.getItem('属性名') )

兄弟姐妹们,学习vue还远远不止上述的内容。必须学习HTML、Css、JavaScript、Ajax等相关语法呦!!!上述内容仅仅这几大模块经常需要在vue中使用的。

愿你所愿即所得!2023遇见更完美的自己!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/197331.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为了会做题而学习期权合约

基本术语 买入期权&#xff1a;按照固定价格购买特定物品的期权。卖出期权&#xff1a;按照固定价格出售特定物品的期权。执行价格&#xff1a;期权合约中约定的固定价格。到期日&#xff1a;在其后期权不再被执行的日期。欧式期权&#xff1a;期权只能在到期日当日被执行。美…

python带你采集热点事件,让你第一时间掌握全发展

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 开发环境: python 3.8: 解释器 pycharm: 代码编辑器 requests: 发送请求 parsel: 解析数据 jieba pandas stylecloud 实现流程: 一. 思路分析 找到数据来源 network 记录网页数据 请求 二…

windows下djaongo项目移植至centos7系统并启动

概述&#xff1a;在windows下开发完成的django项目需要移植至centos系统并启动。 文章目录1,在django项目目录下生成requirements.txt文件2,下载FileZilla安装并连接Linux系统3,本地传输文件至linux系统3.1,可用vim修改settings.py的参数4,安装requirements.txt依赖包5,启动项目…

pwn小白入门 装载 笔记

所看视频奉上&#xff1a;5、装载与汇编_哔哩哔哩_bilibili笔记如下&#xff1a;1.查看文件类型&#xff1a;file 文件名其中&#xff1a;add&#xff1a;文件名ELF&#xff1a;文件格式64-bit&#xff1a;64位LSB&#xff1a;端序 lsb&#xff1a;小端序 msb:大端序x86-64:架构…

sqlserver2012数据库,日志文件损坏修复

背景 服务器突然断电&#xff0c;导致数据库日志文件损坏&#xff0c;数据库无法启动。 本方案也同样适用于不小心删除数据库日志文件的情况。 相关报错 master数据库日志异常&#xff0c;导致数据库无法启动&#xff1a; 无法在数据库“master”(数据库 ID 为 1)的分配单元 …

windows下生成自签证书并配置到chrome

Windows自签证书生成工具&#xff1a;XCA – X Certificate and Key Management 简称&#xff1a;XCA 下载地址&#xff1a; https://github.com/chris2511/xca/releases 或者 http://sourceforge.net/projects/xca/files/latest/download 界面&#xff08;1.4.1版本&#xff0…

从0开始学python -19

Python3 字典 字典是另一种可变容器模型&#xff0c;且可存储任意类型对象。 字典的每个键值 key>value 对用冒号 : 分割&#xff0c;每个对之间用逗号(,)分割&#xff0c;整个字典包括在花括号 {} 中 ,格式如下所示&#xff1a; d {key1 : value1, key2 : value2, key3…

剑指Offer 第23天 数组中出现次数超过一半的数字 数组中数字出现的次数 I 数组中数字出现的次数 II(异或运算)

剑指 Offer 39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半&#xff0c;请找出这个数字。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 来源&#xff1a;力扣&a…

Python自动化测试实战篇(2)unittest实现批量接口测试,并用HTMLTestRunner输出测试报告

代码已上传Python接口项目实战篇&#xff08;2&#xff09;源码 项目场景&#xff1a; 由于关于接口的测试用例任务越来越多&#xff0c;单纯靠人工手敲的方式输入和校验&#xff0c;速度上已经不能够满足项目的进行速度&#xff0c;而且都是针对登录的框框进行用例测试&…

一站式轻监控轻运维系统nezha(下篇)

本文软件由网友 114514 推荐&#xff1b; 命令行安装 docker安装所需要的文件都能在 https://github.com/naiba/nezha/tree/master/script 找到&#xff0c;config.yaml 和 docker-compose.yml 老苏都做了调整 你可以在 data 目录中新建一个空的 config.yaml 文件&#xff0c;…

基于“Doris”的type2拉链表的Mysql实现

基于“Doris”的type2拉链表的Mysql实现 需求说明 基于Doris实现Type2、拉链表。主要对上游系统里的面积字段进行监控&#xff0c;如果发现变化则跟踪记录到维度表里。 解决方案 type2相关概念见如下链接: SCD缓慢变化维拉链表 这里特别需要注意的是&#xff1a; 1、因为…

scrapy_redis原理分析并实现断点续爬以及分布式爬虫

scrapy_redis原理分析并实现断点续爬以及分布式爬虫 学习目标 了解 scrapy实现去重的原理了解 scrapy中请求入队的条件掌握 scrapy_redis基于url地址的增量式单机爬虫掌握 scrapy_redis分布式爬虫 1. 下载github的demo代码 clone github scrapy-redis源码文件 git clone http…

WPF TotalSummary汇总栏设置鼠标点击事件和显示格式修改

文章目录最开始的提示汇总有两种Summary Panel的设置参考这里Fixed Summary Panel的设置参考这里代码中都用到了DXBinding多个汇总项&#xff0c;对某一项进行控制设置鼠标点击事件整体的xaml代码如下总结最开始的提示 WPF毕竟是微软的东西&#xff0c;且用的人不多&#xff0…

虚函数的复杂(继承)内存布局

文章目录单继承&#xff08;无虚函数覆盖&#xff09;单继承&#xff08;有虚函数覆盖&#xff09;多继承&#xff08;无虚函数覆盖&#xff09;多继承&#xff08;有虚函数覆盖&#xff09;菱形继承&#xff08;有虚函数覆盖&#xff09;菱形虚拟继承&#xff08;有虚函数覆盖…

浅析git

目录 git 的历史 git 的感性认识 git 在Linux下的操作 git三板斧 git 的历史 雷纳斯托瓦兹&#xff0c;想必大家对这个名字并不陌生&#xff0c;他是Linux内核的最早作者&#xff0c;随后发起了这个开源项目&#xff0c;担任Linux内核的首要架构师与项目协调者&#xff0c…

Kafka入门(一)

1、Kafka简介 Kafka是一个分布式的基于发布/订阅模式的消息队列&#xff08;Message Queue&#xff09;&#xff0c;主要应用于大数据实时处理领域&#xff08;hadoop集群&#xff09;、物联网领域。其主要设计目标如下&#xff1a; 以时间复杂度为O(1)的方式提供消息持久化能…

华为路由器Talent服务配置

前言 Telnet&#xff1a;console是通过本地进行设备管理&#xff0c;还有一种是通过远程登录的方式进行设备管理&#xff0c;也就是虚拟终端。通过发送信息进行控制&#xff0c;不受终端和服务器的位置限制&#xff08;只要可以通信&#xff0c;服务器启用了Telnet功能即可&am…

Python 的基础语法

第一个 Python 程序交互式编程交互式编程不需要创建脚本文件&#xff0c;是通过 Python 解释器的交互模式进来编写代码。linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,提示窗口如下&#xff1a;$ pythonPython 2.7.6 (default, Sep 9 2014, 15:04:36)[GCC 4.2…

LinkedHashSet源码阅读理解

概述 1、底层&#xff1a;HashSet LinkedHashMap 2、创建节点时将节点插入链表&#xff0c;因此有序 3、线程不安全 源码理解 demo&#xff1a; public class LinkedHashSetDemo {public static void main(String[] args) {test();}public static void test(){LinkedHas…

CDMP认证考试考前你需要了解的那些事

对国内的数据从业人员来说&#xff0c;CDMP算比较新的考试&#xff0c;目前相关介绍很少&#xff0c;小编整理了CDMP考试先关的一些内容&#xff0c;希望对正在考虑考取CDMP认证的你有所帮助&#xff01;CDMP认证有几个等级&#xff1f;4个。A级&#xff08;基础级&#xff09;…