ref的使用与数组中的最全的使用方法

news2024/11/25 11:22:30

目录

1.ref的使用

什么是 ref 引用?

使用ref引用组件实例 

2. this.$nextTick(cd) 方法

 数组中的方法

1.some方法 --- 查找到目标元素后就停止后面的查找

 2.every----判断每一项是否都满足要求

3.reduce方法

4. filter()方法

 5. map()方法

6. forEach()方法

7. find()方法

8. findIndex()方法

9. fill()方法

10.  join()方法

11. pop()方法和push()方法

12. shift()和unshift()

13. reverse()

14.splice()

15.toString()

16. indexOf()


1.ref的使用

jquery 牛逼 简化了程序员操作DOM的过程

vue 优势:MVVM ,在 vue 中,程序员不需要操作DOM,程序员只需要把数据维护好即可!(数据驱动试图)

结论:在 vue 项目,强烈不建议大家安装和使用jQuery ! ! !

假如:在 vue 中,需要操作 DOM 了,需要拿到页面上的某个 DOM 元素的引用,此时需要用到ref

引用。

什么是 ref 引用?

ref 用来辅助开发者在不依赖于 jQuery 的情况下,在vue中获取 DOM 元素或组件的引用。

每个vue的组件实例上,都包含一个 $refs 对象,里面存储着对应的 DOM 元素或组件的引用。默认情况下,组件的 $refs 指向一个空对象。

案例:

 拿当前的DOM对象:

 效果显示:

<h1>App根组件</h1>

 改变它的字体颜色:

this.$refs.myh12.style.color = 'red'

注意:ref的值不能冲突,不然后面的DOM对象会覆盖之前获得的对象,最终获取的是最后一个对象。 

使用ref引用组件实例 

如果想要使用 ref 引用页面上的组件实例,则可以按照如下的方式进行操作: 

<!-- 使用 ref 属性,为对应的"组件"添加引用名称 --> 
<my-counter ref= "counterRef"></my-counter>
<button @click="getRef">获取 $refs 引用</button>

methods: {
    getRef() { 
        //通过 this.$refs.引用的名称  可以引用组件的实例
        console.log( this.$refs.counterRef)
        // 引用到组件的实例之后,就可以调用组件上的 methods 方法
        this.$refs.counterRef.add()
    },
}

Ref运用在组件上,案例:

 

 

 resetCount是子组件里的方法。

2. this.$nextTick(cd) 方法

组件的 $nextTick(cb) 方法,会把 cb 回调推迟到下一个 DOM 更新周期之后执行。通俗的理解是:

等组件的 DOM 更新完成之后,再执行 cb 回调函数。从而能保证 cb 回调函数可以操作到最新的

DOM元素。

 数组中的方法

1.some方法 --- 查找到目标元素后就停止后面的查找

some()方法用于检测数组中的元素是否满足指定条件(函数提供)。

some()方法会依次执行数组的每个元素:

如果有一个元素满足条件,则表达式返回true ,剩余的元素不会再执行检测。

如果没有满足条件的元素,则返回false。

注意: some() 不会对空数组进行检测。

注意: some() 不会改变原始数组。

arr.some(item, index) => {
    console.log('ok')
    if (item === '苏大强') {
        console.log(index)
        //在找到对应的项之后,可以通过 return true 固定的语法,来终止 some 循环
        return true
    }
})

 2.every----判断每一项是否都满足要求

every()方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。

every()方法使用指定函数检测数组中的所有元素:

如果数组中检测到有一个元素不满足,则整个表达式返回false,且剩余的元素不会再进行检

测。

如果所有元素都满足条件,则返回true。

注意: every() 不会对空数组进行检测。

注意: every() 不会改变原始数组。

有一行代码的全写是这样的: 

3.reduce方法

普通的方法:(原型)

 简写后的语法格式:

 arr.filter( item => item.state).reduce((累加的结果,当前循环项) => { } , 初始值)

函数可简写成为(用reduce实现):

// arr.filter(item => item.state).reduce((累加的结果,当前循环项) => { }, 初始值)

const result = arr.filter(item => item.state).reduce((amt,item) => {
    // 把累加的结果,return出去, 其实 reduce 就是一个累加器
    return amt += item.price * item.count
}, 0)

4. filter()方法

filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

是否改变原数组:否

是否对空数组进行检测:否

const arr= [32, 33, 16, 40];
const arr1 = arrfilter(item => item >= 18)
console.log(arr) //输出: [32, 33, 16, 40]
console.log(arr1) // 输出: [32, 33, 40]

 5. map()方法

map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map()方法按照原始数组元素顺序依次处理元素。

是否改变原数组:否.

是否对空数组进行检测:否

const arr= [4, 9, 16, 25]; 
const arr1 = arr.map(item => item+2)
console.log(arr) // 输出: [4, 9, 16, 25]
console.log(arr1) //输出: [6, 11,18, 27]

6. forEach()方法

forEach()方法用于调用数组的每个元素,并将元素传递给回调函数。

注意: forEach()对于空数组是不会执行回调函数的。

tips: forEach()中不支持使用 break(报错) 和 return(不能结束循环),有需要时可使用常规的 for 循

环。

const arr1 = 0;
arr.forEach(item => arr1.push(item))
console.log(arr) // 输出: [4, 9, 16, 25]
console.log(arr1) // 输出: [4, 9, 16, 25]

7. find()方法

find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。

find()方法为数组中的每个元素都调用一次函数执行:

当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执

行函数。

如果没有符合条件的元素返回 undefined

注意: find()对于空数组,函数是不会执行的。

注意: find()并没有改变数组的原始值。

const arr= [4, 9, 16, 25];
const b = arr.find(item => item > 10)
const c = arr.find(item => item < 1)
console.log(arr) //输出: [4, 9, 16, 25]
console.log(b) // 输出: 16
console.log(c) // 输出: undefined

8. findIndex()方法

findIndex() 方法返回传入一个测试条件(函数) 符合条件的数组第一个元素位置。

findIndex() 方法为数组中的每个元素都调用一次函数执行: 

当数组中的元素在测试条件时返回 true 时, findIndex()返回符合条件的元素的索引位置,之后

的值不会再调用执行函数。

如果没有符合条件的元素返回-1

注意: findIndex()对于空数组,函数是不会执行的。

注意: findIndex()并没有改变数组的原始值。

const arr= [4, 9, 16, 25];
const b = arr.findIndex(item => item > 10)
const C = arr.findIndex(item => item < 1)
console.log(arr) // 输出: [4, 9, 16, 25]
console.log(b) // 输出: 2
console.log(c) // 输出: -1

9. fill()方法

fill() 方法用于将一个固定值替换数组的元素。

注意: fill() 不会对空数组进行填充。

注意: fill() 会改变原始数组。

// 当只有一个参数时
const arr1= [4, 9, 16, 25];
const b = arr1.fill(100);
console.log(arr1) // 输出: [100, 100, 100, 100]
console.log(b) //输出: [100, 100, 100, 100]

// 当有三个参数时
const arr2= [4, 9, 16, 25];
const c= arr.fill(100, 2, 4) // 2为开始填充的起始位置,4为结束位置(不包含)
console.log(arr2) //输出: [4, 9, 100, 100]
console.log(c) //输出: [4, 9, 100, 100]

// 对空数组的操作
const arr3= [];
const d = arr3.fill(100);
console.log(arr3) //输出: []
console.log(d) //输出: []

10.  join()方法

join(‘参数’)把数组的元素以传入的参数为分割符,转换成字符串。

let arr=[1,2,3,4];
let str=arr.join(',');
console.log(str)    // '1,2,3,4,5'

11. pop()方法和push()方法

push(): 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。

pop():数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。

let arr = ['张三', '李四', '王五'];

let count = arr.push('马六');
console.log(arr) // -> ['张三','李四','王五','马六']
console.log(count) // -> 4

let item = arr.pop();
console.1og(item) // ->马六;

12. shift()和unshift()

shift():删除原数组第一项, 并返回删除元素的值;如果数组为空则返回 undefined

unshift:将参数添加到原数组开头,并返回数组的长度。

let arr = ['张三','李四','王五'];
let item = arr.shift();
console.log(arr) // -> ['李四','王五']
console.log(item); // -> 张三
 
let count = arr.unshift('马六');
console.log(arr) // -> ['马六','李四','王五']
console.log(count) // -> 3

13. reverse()

将数组的数据进行反转,并且返回反转后的数组,会改变原数组

let arr = [1,2,3,4,5];
let arr1 = arr.reverse();
console.log(arr1) // -> [5,4,3,2,1]
console.log(arr) // -> [5,4,3,2,1]

14.splice()

向数组中添加,或从数组删除,或替换数组中的元素,然后返回被删除/替换的元素。

// 注意:splice(start,num,val1,val2,...); 所有参数全部可选。和 slice 相比 splice 是会改变原数组的。
// start 是开始位置,可以为负数,-1就代表从最后一位开始,num代表要删除或者替换的长度,不能为负数。
let arr = ['张三','李四','王五','马六'];
console.log(arr.splice(2,1)) // -> ['王五']
console.log(arr) // -> ['张三','李四','马六']
 
let arr = ['张三','李四','王五','马六'];
console.log(arr.splice(2,1,'七郎')) // -> ['王五'] 
console.log(arr) // -> ['张三', '李四', '七郎', '马六']

15.toString()

将数组转换成字符串Q,类似于没有参数的join()。该方法会在数据发生隐式类型转换时被自动调

用,如果手动调用,就是直接转为字符串。不会改变原数组

let arr = [1,2,3,4,5,6];
console.log(arr.toString()) // -> '1,2,3,4,5,6'
// 注意:没有参数。

16. indexOf()

根据指定的数据,从左向右,查询在数组中出现的位置,如果不存在指定的数据,返回-1,找到了

指定的数据返回该数据的索引

// 注意:indexOf(value, start);value为要查询的数据;start为可选,表示开始查询的位置,当start为负数时,从数组的尾部向前数;如果查询不到value的存在,则方法返回-1
 
let arr = ['张三','李四','王五','马六'];
console.log(arr.indexOf('李四')) // -> 1
console.log(arr.indexOf('李四',2)) // -> -1

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

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

相关文章

2023年第十二届数据技术嘉年华(DTC)资料分享

第十二届数据技术嘉年华&#xff08;DTC 2023&#xff09;已于4月8日在北京圆满落幕&#xff0c;大会围绕“开源融合数智化——引领数据技术发展&#xff0c;释放数据要素价值”这一主题&#xff0c;共设置有1场主论坛&#xff0c;12场专题论坛&#xff0c;68场主题演讲&#x…

低调且强大——JNPF低代码平台

前言 先说说很多人为什么要用低代码平台。大部分的反馈是“懒”&#xff0c;其次就是后台管理这东西吧&#xff0c;来来回回就那些东西&#xff0c;查询/表单/表格/弹窗之类的&#xff0c;加上一些增删改查的逻辑。很多人表示&#xff0c;呆过的公司好几家了&#xff0c;后管的…

《低代码PaaS驱动集团企业数字化创新白皮书》-未来展望

未来展望 低代码PaaS发展的机遇 低代码开发可以帮助企业灵活搭建数字化应用&#xff0c;满足企业各业务部门的个性化、碎片化需求。根据IDC调研结果显示&#xff0c;当前低代码开发主要应用于面向企业内部的应用&#xff0c;占该应用总量的比例达到 11.6%&#xff1b;其次是面…

debug的用法和方式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言debug三种方式 1.按照条件输出 2.进入方法 3.回退到上一个方法 一、debug是什么&#xff1f;二、使用步骤1.方法debug 在条件输出的时候按照条件输出进入方法内…

idea好用插件分享——Bito-ChatGPT

文章目录 安装步骤&#xff1a;第一步&#xff1a;打开Setting第二步&#xff1a;选择Plugins&#xff0c;输入Bito&#xff0c;就可以搜索出来了&#xff0c;再点击安装第三步&#xff1a;安装完成回到IDEA主界面&#xff0c;右边区域可以看到Bito图标&#xff0c;点击展开&am…

Java---异常概述

&#xff08;一&#xff09;认识Java的异常 1、什么是异常 在使用计算机语言进行项目开发的过程中&#xff0c;即使程序员把代码写得尽善尽美&#xff0c;在系统的运行过程中仍然会遇到一些问题&#xff0c;因为很多问题不是靠代码能够避免的&#xff0c;比如&#xff1a;客户…

【软件工程】UML序列图

一.概述 序列图&#xff08;时序图&#xff09;是一种软件工程行化建模方法&#xff0c;用于可视化系统或应用程序中多个对象之间 的交互。在序列图中&#xff0c;每个对象都表示为竖直线&#xff0c;对象之间的消息则表示为水平箭头 从一个对象指向另一个对象。 序列图可以…

Canvas实现动态绘制圆周效果|实现奥运五环

步骤实现&#xff1a; 首先&#xff0c;创建一个 HTML 画布和一个 JavaScript 动画函数。 在画布上绘制一个圆。 定义一个变量来表示圆心的坐标和半径。 进行动画循环以更新圆心坐标&#xff0c;使其沿外圆周运动。 使用三角函数&#xff08;如 sin 和 cos&#xff09;来计…

如何带领小微企业在软件开发行业生存

文章目录 前言一、企业急需的技术人才需要掌握的技能二、人工智能开发者技能三、领导者需要掌握的知识和技能四、具备敏锐的技术视野的方法和途径五、人工智能技术论坛及组织六、机器学习相关论坛和组织七、新技术如何应用和落地1、了解新技术2、确定应用场景3、进行实践验证4、…

Pinia与Vuex区别、Pinia安装与使用

目录 一、Pinia和Vuex区别 二、Pinia使用state、getters、actions 1、安装使用Pinia 2、State 3、actions 4、getters 三、Pinia划分模块 1、目录结构 2、store/user.js 3、某组件使用 四、Pinia持久化存储 1、安装插件 2、store/index.js 3、store/user.js 4、…

Linux 内核设计与实现

文章目录 一、前言二、进程管理1、task_struct2、thread_info 三、调度四、系统调用五、内核数据结构1、kfifo2、映射3、二叉树 六、中断1、软中断2、tasklet3、工作队列4、下半部机制的选择5、下半部禁止与使能 七、内核同步方法1、原子操作2、自旋锁&#xff08;1&#xff09…

辛弃疾最经典的10首词

他&#xff0c;文能挥笔填词&#xff0c;武能上马杀敌&#xff1b; 他&#xff0c;被称为“词中之龙”&#xff0c; 他&#xff0c;一生赤子&#xff0c;追求收复山河&#xff1b; 他&#xff0c;是与苏轼齐名的豪放派词人&#xff1b; 他是辛弃疾。 辛弃疾一生怀着赤子之…

Bito:一款 iead/webstorm 神级插件,由 ChatGPT 团队开发,堪称辅助神器

前言&#xff1a; idea(后端)&#xff0c;webstorm(前端)中可以用的一款辅助插件&#xff1a;Bito 个人尝试体验效果&#xff1a; 优点是&#xff1a;可以自动完成一些场景代码。 缺点&#xff1a;太慢了&#xff0c;大部分时间一直转圈 摘取文档&#xff1a; 什么是Bito&…

UE4 架构初识(一)

UE引擎学习 一、基础框架 UObject: ​ UE创世&#xff0c;万物皆UObject&#xff0c;接着有Actor。UObject提供的元数据、反射生成、GC垃圾回收、序列化、编辑器可见&#xff0c;Class Default Object等&#xff0c;UE可以构建一个Object运行的世界。 Actor: 脱胎自Object的…

问题解决 | Failed to initialize NVML: Driver/library version mismatch

问题描述&#xff1a; Ubuntu20.04服务器上&#xff0c;一个docker容器正在训练模型&#xff0c;打开另外一个docker容器时&#xff0c;出现以下错误 Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to st…

数字设计小思 - 谈谈Latch:组合与时序逻辑的桥梁

前言 本系列整理数字系统设计的相关知识体系架构&#xff0c;为了方便后续自己查阅与求职准备。对于FPGA和ASIC设计中&#xff0c;避免使用Latch&#xff08;锁存器&#xff09;一直是个绕不开的话题&#xff0c;本文结合网上的文章&#xff0c;并根据示例介绍如何在实际设计中…

学习如何通过构建一个简单的JavaScript颜色游戏来操作DOM

学习如何通过构建一个简单的JavaScript颜色游戏来操作DOM 题目要求 我们将构建一个简单的颜色猜谜游戏。每次游戏启动时&#xff0c;都会选择一个随机的RGB颜色代码。根据游戏模式&#xff0c;我们将在屏幕上提供三个&#xff08;简单&#xff09;或六个&#xff08;困难&…

基于 SpringBoot + Vue 的智能停车场项目。

一、开源项目简介 基于 SpringBoot Vue 的智能停车场项目。 智能停车场管理平台&#xff01;科学计费 多种计费方案灵活切换&#xff0c;商场、小区、停车场等场景均适用&#xff01;无人值守 云端控制实现无岗亭模式下的车辆自主进出&#xff0c;降低人工成本&#xff01; …

Nacos,OpenFeign,Ribbon,loadBalance如何相互协调工作

1、SpringCloud规范 对于Nacos而言其作用在于服务注册发现和配置中心&#xff0c;对于Ribbon而言作用在于实现实例负载均衡&#xff0c;对于OpenFeign而言要通过rpc实现远程调用 2、Nacos实现服务注册发现 SpringCloud提供了ServiceRegistration接口&#xff0c;实现服务注册…

软件保护器:Themida 3.1.14 Crack

先进的Windows软件保护系统 版本&#xff1a;3.1 版本&#xff1a;3.1.4.0 日期&#xff1a;2022 年 11 月 10 日 概述 在创建应用程序时&#xff0c;Compiler 会将应用程序源代码编译成多个由机器语言代码构成的目标文件。然后将目标文件链接在一起以创建最终的可执行文件。 与…