项目-数组的方法的使用方法和场景

修改器方法:
	pop(): 删除数组的最后一个元素,并返回这个元素
	push():在数组的末尾增加一个或多个元素,并返回数组的新长度
	reverse(): 颠倒数组中元素的排列顺序
	shift(): 删除数组的第一个元素,并返回这个元素
	unshift(): 在数组的开头增加一个或多个元素,并返回数组的新长度
	sort(): 对数组元素进行排序,并返回当前数组
	splice(): 在任意的位置给数组添加或删除任意个元素
访问方法:
	concat(): 返回一个由当前数组和其它若干个数组或者若干个非数组值组合而成的新数组join(): 连接所有数组元素组成一个字符串
	slice(): 抽取当前数组中的一段元素组合成一个新数组
	indeOf(): 返回数组中第一个与指定值相等的元素的索引,如果找不到这样的元素,则返回 -1
	lastIndexOf(): 返回数组中最后一个(从右边数第一个)与指定值相等的元素的索引,如果找不到这样的元素,则返回 -1
迭代方法:
	forEach(): 为数组中的每个元素执行一次回调函数,最终返回undefined
	every(): 如果数组中的每个元素都满足测试函数,则返回 true,否则返回 false
	some(): 如果数组中至少有一个元素满足测试函数,则返回 true,否则返回 false
	filter(): 将所有在过滤函数中返回 true 的数组元素放进一个新数组中并返回
	map(): 返回一个由回调函数的返回值组成的新数组 return {}

场景1, indeOf()实现多选

item.id代表数组里的唯一值,HTMl

<view class="bar FlexWrap">
			<view class="before">
				权限:
			</view>
			<view class="allchoose FlexWrap">
				<view class="font Flex" v-for="(item,index) in grouplist" :key="index" @click="authgroup(item.id)">
					<image src="/static/mini_images/checked.png" mode="" v-if="chooseauth.indexOf(item.id) != -1">
					</image>
					<image src="/static/mini_images/check.png" mode="" v-else></image>
					<view>{{item.name}}</view>
				</view>
			</view>
		</view>

js中

	data() {
			return {
				grouplist: [{id:1,name:"乞力马扎罗"}],
				chooseauth: [],
			};
		},
	methods:{
		// 权限多选
			authgroup(status) {
				if (this.chooseauth.indexOf(status) == -1) {
					this.chooseauth.push(status)
				} else {
					this.chooseauth.splice(this.chooseauth.indexOf(status), 1)
				}
			},
	}
		
场景2, reduce ()实现求和,求总价,求乘积

arr.reduce(callback(),[initialValue])

  • 为数组中的每一个函数依次执行回调函数callback

  • callback(prev, cur, index, arr)接收四个参数

  • 参数1:是上一次回调返回的值,initialValue是初始值

  • 参数2:是数组中当前被处理的元素

  • 参数3:是当前被处理的元素的索引

  • 参数4:是调用reduce的数组

  • 代码demo展示

<template>
	<view>
		<div v-for="(item,index) in list" :key="index">
			{{item.price}}
		</div>
		<button @click="gettotalprice()">计算总价</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {
			total_price :"",
				list: [{
					name: "乞力马扎罗",
					price: '888'
				},{
					name: "乞力马扎罗",
					price: '777'
				},{
					name: "乞力马扎罗",
					price: '666'
				},{
					name: "乞力马扎罗",
					price: '555'
				}]
			};
		},
		methods:{
			gettotalprice(){
				this.total_price = this.list.reduce((prev, cur, index, arr)=>{
					console.log(prev, cur, index, arr)
					//求和,这里*1是为了转为数值型
					return prev + cur.price*1;
					//求乘积
					//return prev + cur.price*1;
				},0)
			},
		}
	}
</script>

<style lang="scss">

</style>

在这里插入图片描述
在这里插入图片描述

场景3, reduce ()实现去重
  • 注意,当想接收一个数组的时候,reduce的默认值initialValue就是数组[ ]
gettotalprice(){
	let str ;
	str = this.list.reduce((prev, cur, index, arr)=>{
		console.log(prev, cur, index, arr)
		if(!prev.includes(cur.name)){
			  return prev.concat(cur.name)
		}else{
			 return prev
		 }
	},[])
	console.log(str)
},
场景4, filter()和map()嵌套使用获取数组中的为true数据的id,返回id数组
let allgroup = [];
allgroup = this.orderList.filter(item=>item.check).map(i=>i.id)
场景5, v-for控制循环次数,采用slice
v-for="(item,index) in list.slice(0, 2)"
//用这样的方法可以截取循环的数据长度,从而控制循环的次数
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值