vue如何调用data双重数组的数据(双重for循环)

文章介绍了在Vue中如何使用v-for指令进行双重嵌套遍历,以展示和访问data中的多层数组数据结构。通过示例代码展示了如何遍历一个包含多个对象,每个对象又有各自技能数组的listfather数据,从而输出每个人的姓名和他们的所有技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

双重嵌套v-for的简单使用

1.v-for基础语法

v-for在vue的主要使用语法的方式如下:

//js中
data():{
return:{
List:[
{listDataName:1},
{listDataName:2},
{listDataName:3},
{listDataName:4},
]
}
}:
<view v-for="(item,index) in List">{{item.listDataName}}</view>

上面的是遍历data的List数组,item的含义类似于对象,用来调用List的数据,根据.来调用, 如item.listDataName,而这两个的外面需要加两个{{}},index是遍历的下标,如果第一个数组的数据,那么它的索引就是0,索引从0到数组的总长度-1结束,也就是遍历结束时结束.

2 v-for的双重嵌套调用

2.1 嵌套前准备

首先我们要准备一个Data数组,这个数组里面再存放一个数组,以下是data中数据示例

listfather: [{
						name: "小明",
						skills: [{
								sname: "Java",
							},
							{
								sname: "大数据"
							},

						],
					},
					{
						name: "张三",
						skills: [{
								sname: "C",
							},
							{
								sname: "C++"
							},
						
						],
					}
				],

2.2 双重v-for调用数组数据

首先我们调用name是比较简单的遍历一个v-for循环就可以了,但如果我们遍历skills时就会遇到一些问题,需要写两个v-for,第一个v-for遍历的是我们的数组,第二个v-for遍历的是我们第一个v-for“item对象”的skills子数组,那么这样,就可以实现我们想要的双重循环以达到我们取到skills也就是遍历嵌套数组中的数据效果了。以下有具体界面展示、功能代码、全部代码。主要是以演示为主,所以界面比较“简洁”。

<view v-for="(item,index) in listfather" :key="id">
			{{"姓名:"+item.name+"技能:"}}
			<text v-for="(stu,index) in item.skills" :key="sid">
				{{stu.sname}}
			</text>
		</view>
<template>
	<view>
		<view v-for="(item,index) in listfather" :key="id">
			{{"姓名:"+item.name+"技能:"}}
			<text v-for="(stu,index) in item.skills" :key="sid">
				{{stu.sname}}
			</text>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				listfather: [{
						name: "小明",
						skills: [{
								sname: "Java",
							},
							{
								sname: "大数据"
							},

						],
					},
					{
						name: "张三",
						skills: [{
								sname: "C",
							},
							{
								sname: "C++"
							},
						
						],
					}
				],
			}
		},
		methods: {

		}
	}
</script>
### Vue.js 中 `v-for` 指令实现列表遍历与渲染 #### 基本语法 在 Vue.js 中,`v-for` 是一种基于原生 JavaScript 的迭代方法来渲染列表的方式。其基本语法如下: ```html <div v-for="(item, index) in items" :key="index"> {{ item }} </div> ``` 其中: - `(item, index)` 表示每次迭代中的当前项和索引。 - `items` 是一个数组或者对象,表示要被遍历的数据源。 此语法可以用来遍历数组或对象,并将其内容动态地绑定到 DOM 上[^2]。 --- #### 遍历数组 当需要遍历一个数组时,可以通过以下方式实现: ##### 数据定义 ```javascript new Vue({ el: '#app', data: { list: ['苹果', '香蕉', '橙子'] } }); ``` ##### HTML 结构 ```html <ul id="app"> <li v-for="(fruit, index) in list" :key="index">{{ fruit }}</li> </ul> ``` 在此示例中,`list` 数组中的每一项都会被渲染成 `<li>` 列表项,同时通过 `:key` 属性为每项提供唯一的标识符以优化性能[^3]。 --- #### 遍历对象 除了数组外,`v-for` 还支持遍历对象的键值对。以下是具体用法: ##### 数据定义 ```javascript new Vue({ el: '#app', data: { objectList: { name: '张三', age: 25, city: '北京' } } }); ``` ##### HTML 结构 ```html <ul id="app"> <li v-for="(value, key, index) in objectList" :key="key"> {{ index }}. {{ key }}: {{ value }} </li> </ul> ``` 在这个例子中,`(value, key, index)` 分别代表对象的值、键名以及对应的索引位置。最终会生成类似于这样的结构: ``` 1. name: 张三 2. age: 25 3. city: 北京 ``` --- #### `of` 和 `in` 的区别 需要注意的是,在使用 `v-for` 渲染列表时,可以选择两种不同的写法:`... of ...` 或者 `... in ...`。这两种形式的功能完全一致,但在语义上略有不同: - **推荐使用** `... of ...` 形式,因为它更接近现代 JavaScript 的标准(如 `for...of` 循环),可读性更高。 - 而 `... in ...` 更加传统,适合熟悉早期版本开发者的需求。 无论哪种写法,它们的行为都是一致的。 --- #### 完整示例代码 下面展示了一个完整的综合案例,包含了数组和对象的双重遍历功能: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>v-for 示例</title> <script src="https://cdn.jsdelivr.net/npm/vue@2"></script> </head> <body> <div id="app"> <!-- 遍历数组 --> <h3>水果列表:</h3> <ul> <li v-for="(fruit, index) in fruits" :key="index">{{ index + 1 }}. {{ fruit }}</li> </ul> <!-- 遍历对象 --> <h3>个人信息:</h3> <ul> <li v-for="(value, key, idx) in personInfo" :key="key">{{ idx + 1 }}. {{ key }}: {{ value }}</li> </ul> </div> <script> new Vue({ el: '#app', data: { fruits: ['草莓', '葡萄', '西瓜'], personInfo: { name: '李四', gender: '男', hobby: '编程' } } }); </script> </body> </html> ``` 运行以上代码后可以看到两个部分分别显示了水果名称和个人资料的信息。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃巧克li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值