Vue学习笔记(4)--响应式数组、JavaScript高阶函数、v-model双向绑定

这篇博客深入探讨了Vue中的响应式数组特性,包括普通for循环、for...in、for...of以及filter、map和reduce等JavaScript高阶函数的应用。同时,详细阐述了v-model的双向绑定原理,如radio和checkbox的用法,并介绍了v-model的修饰符,如lazy、number和trim,帮助理解如何更好地控制数据同步。
摘要由CSDN通过智能技术生成

一、响应式数组

btnClick() {
			//1、push()在数组结尾加上数据
			this.name.push('aa', 'bb','cc');
						
			//2、pop()删除数组的最后一个元素
			this.name.pop();
						
			//3、shift()删除数组中的第一个元素
			this.name.shift();
						
			//4、unshift()在数组最前面添加元素
			this.name.unshift();
						
			//5、splice(从哪个位置开始,要删除几个,‘要添加替换的元素’)
			//若为输入第二个参数数则删除后面所有元素
			//若要插入元素时,就输入第二个参数为0,后面跟上要加上的数字
			this.name.splice(1, 2, 'a', 'b'); 
						
			//6、reverse()将数组内容反转
			this.name.reverse()
}
					

二、JavaScript高阶函数

关于for循环

1、普通for循环

let total = 0,
for(let i = 0; i < this.books.length; i++){
	total += this.books[i].price * this.books[i].count
}
return total

2、for(let i in this.books)

let total = 0,
for(let i in this.books){
	total += this.books[i].price * this.books[i].count
}
return total

3、for(let item of this.books)

let total = 0,
for(let item of this.books){
	total += item.price * item.count
}
return total

编程范式:命令式范式/声明式范式

filter

  • 对数组进行筛选

  • filter中回调函数有一个要求:必须返回boolean

  • 返回true时,函数内部会自动将这次回调的n加入数组

  • 返回false时,函数内部会过滤掉这次n

let nums = [10,11,13,44,135,324,555]
let newNums = nums.filter(function(n){
	return false
})

map

  • 对数组统一操作
let new2Nums = newNums.map(function(n){
	return n * 2
})

reduce

  • 对数组中所有内容进行汇总
let new2Nums = [20, 10, 50, 20]
let total = new2Nums.reduce(function(preValue, n){
	return preValue + n
}, 0) 
          
//进行四次遍历
	//第一次:preValue: 0, n:20
	//第二次:preValue: 20, n:10
	//第三次:preValue: 30, n:50
	//第四次:preValue: 80, n:20

再简单一些完成上述操作

let total = nums.filter(function(n){
	return n < 100
}).map(function(n){
	return n * 2
}).reduce(function(preValuce, n){
	return preValuce + n
}, 0)

或者使用指向函数

let total = nums.filter(n => n < 100).map(n => n * 2).reduce((pre, n), pre + n)

三、v-model双向绑定

原理:实现表单元素和数据的双向绑定

<input type="text" v-model="message"/>

//message: 'hhh',

v-model相当于:

  • v-bind绑定一个value元素
  • v-on指令给当前元素绑定input事件

radio

			<label for="male">
				<input type="radio" id="male" value="" v-model="sex"/></label>
			
			<label for="female">
				<input type="radio" id="female" value="" v-model="sex"/></label>
			
			<h2>你选择的性别:{{sex}}</h2>

chexbox

单选:大多用在那种同意协议注册那种

			<label for="">
				<input type="checkbox" id="agree" v-model="isAgree"/>同意
			</label>
			
			<h2>你选择的是:{{isAgree}}</h2>
			<button type="button" :disabled="!isAgree">next</button>

多选:

			<input type="checkbox" value="1" v-model="count"/>1
			<input type="checkbox" value="2" v-model="count"/>2
			<input type="checkbox" value="3" v-model="count"/>3
			<h2>{{count}}</h2>

			count: [],

正常使用时

			<label v-for="item in books">
				<input type="checkbox" :value="item" v-model="count"/>{{item}}
			</label>

			//count: [],
			//books: ['x','y','z'],

v-model修饰符

  • lazy修饰符

    • 默认情况下,v-model默认时在input事件中同步输入数据。一旦发生数据改变data中的数据就会自动改变
    • lazy修饰符可以让数据在失去焦点或者回车的时候才会更新
  • number修饰符

    • 默认情况下,在输入框中无论我们输入的是字母还是数字,都会被当作字符串类型进行处理
    • 有时希望可以处理的是数字的时候就可以通过number修饰符将输入框中输入的内容自动转成数字类型
  • trim修饰符

    • 如果输入的内容首位有很多空格,可以通过trim修饰符过滤内容左右两边的空格

主要参考这个教学视频学习:https://www.bilibili.com/video/BV15741177Eh?p=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值