vue根据数组type筛选数据

本文介绍如何使用Vue.js根据数组内的children属性筛选数据,以实现type为2的元素作为按钮权限,type为1的作为菜单列表。通过判断children的type属性,动态渲染前端菜单栏,确保功能的正确实现。

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

vue根据数组中的数组筛选数据


功能主要是type为2的是按钮权限,type为1的是菜单列表,前端要根据children里的type做出判断。
最终效果是动态渲染菜单栏

代码如下


在这里插入图片描述

### Vue 3 中根据数组元素的属性值筛选数据Vue 3 中可以根据对象数组的属性值来筛选数据,通常可以使用 JavaScript 的 `filter()` 方法。此方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。 对于具体场景,如果希望基于 `type` 属性过滤菜单项和按钮权限,则可以在组件内定义一个计算属性来进行处理[^1]: ```javascript computed: { filteredItems() { return this.items.filter(item => item.type === 2); } } ``` 上述代码片段展示了如何仅保留那些其 `type` 值等于 2 (即表示按钮权限) 的项目。同样地,可以通过改变条件表达式轻松调整逻辑以适应其他需求,比如 type 为 1 表示菜单列表的情况。 当面对更复杂的结构如嵌套的对象数组时(例如存在 children 字段),可能需要递归遍历整个树状结构并应用相同的筛选标准: ```javascript function filterByType(items, targetType) { let result = []; function recurse(currentItems) { currentItems.forEach((item) => { if (item.type === targetType || (!targetType && !('type' in item))) { result.push({ ...item }); if (Array.isArray(item.children)) { item.children = recurse(item.children); } } else if (Array.isArray(item.children)) { item.children = recurse(item.children); if (item.children.length > 0) { result.push({ ...item, children: item.children }); } } }); return result; } return recurse(items); } // 使用方式如下所示: const specificTypeItems = computed(() => filterByType(this.menuData, 2)); ``` 这段代码实现了对具有任意层数子节点的数据集按指定类型的筛选功能,并且能够保持原始层次关系不变。 另外一种常见的做法是在接收到服务器响应之后立即执行一次性的静态筛选操作,在这种情况下可以直接利用 `.filter()` 函数完成任务[^2]: ```javascript import { ref, onMounted } from 'vue'; export default { setup() { const cinemaList = ref([]); const cinemaLineId = ref([/* some ids */]); onMounted(async () => { try { const res = await fetch('/api/cinemas'); const data = await res.json(); cinemaList.value = data.filter(item => cinemaLineId.value.includes(item.cinemaLineId) ); } catch (error) { console.error(error); } }); return { cinemaList, }; }, }; ``` 这里展示了一个简单的例子,其中从 API 获取电影院线信息后按照给定 ID 列表进行了初步筛选。 最后还可以考虑采用计算属性的方式简化模板内的绑定过程,使得视图层更加清晰易读[^3]: ```html <ul> <li v-for="item in newList" :key="item.id">{{ item.name }}</li> </ul> <script> import { computed } from 'vue'; ... setup(props){ ... const originalList = reactive([...]); const newList = computed(()=> originalList.filter(item=>originalIds.indexOf(item.id)!==-1) ) ... } </script> ``` 以上就是几种不同的策略用于实现在 Vue 3 应用程序中依据对象数组成员特性选取所需条目的方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值