当前位置:首页 > 问答 > 正文

前端开发|数据遍历:vue中如何循环遍历json对象及其实现方法

🔥 2025年前端新趋势:Vue数据遍历技巧大公开!

大家好呀~今天咱们来聊聊Vue里怎么玩转JSON对象的遍历!🚀 最近Vue 3.4刚发布了稳定版(2025年7月),优化了响应式性能,遍历大数据更流畅了!无论你是刚入门还是老司机,这篇干货都能让你直呼"真香"~


📌 为什么需要遍历JSON对象?

开发中后台返回的数据90%都是JSON格式,

{
  "user": {
    "name": "小明",
    "age": 18,
    "hobbies": ["代码", "奶茶", "睡觉"]
  }
}

我们需要把这些数据优雅地渲染到页面上,这时候遍历(循环)就是必备技能啦!


🛠️ Vue遍历JSON的5种姿势

方法1:v-for 直接遍历对象

<template>
  <div v-for="(value, key) in user" :key="key">
    {{ key }}: {{ value }} 
    <!-- 输出:name: 小明, age: 18... -->
  </div>
</template>

💡 注意:(value, key)顺序固定,还可用第三个参数index获取索引

方法2:遍历嵌套对象(套娃模式)

遇到多层数据时:

前端开发|数据遍历:vue中如何循环遍历json对象及其实现方法

data() {
  return {
    data: {
      user: {
        profile: { name: 'Vue大佬' }
      }
    }
  }
}
<div v-for="(item, key) in data.user.profile">
  {{ key }} - {{ item }} <!-- 输出:name - Vue大佬 -->
</div>

方法3:数组+对象混合双打

当JSON里既有数组又有对象:

{
  "students": [
    { "id": 1, "name": "张三" },
    { "id": 2, "name": "李四" }
  ]
}
<ul>
  <li v-for="student in students" :key="student.id">
    {{ student.name }} <!-- 循环输出所有学生名字 -->
  </li>
</ul>

方法4:使用计算属性过滤

有时候需要先处理数据再遍历:

computed: {
  filteredUsers() {
    return this.users.filter(user => user.age > 20)
  }
}
<div v-for="user in filteredUsers">...</div>

方法5:动态键名遍历(进阶技巧)

当键名不确定时:

const dynamicObj = {
  [Math.random()]: '随机值',
  'tempKey': '临时数据'
}
<span v-for="(val, key) in dynamicObj">
  键{{ key }}的值是{{ val }}
</span>

⚠️ 避坑指南

  1. key的重要性 🚨
    务必给v-for添加唯一key,避免渲染混乱:

    <!-- 好习惯 --> 
    <div v-for="item in list" :key="item.id">
    <!-- 坏习惯 -->
    <div v-for="item in list">
  2. 不要修改遍历中的对象 💥
    Vue的响应式系统可能检测不到直接增删属性的操作,应该用:

    // 正确姿势
    this.$set(this.obj, 'newProp', '值')
    // 错误示范
    this.obj.newProp = '值' // 可能不触发更新
  3. 大对象性能优化 🐢 → 🐇
    当遍历超大型对象(比如10万+属性)时:

    前端开发|数据遍历:vue中如何循环遍历json对象及其实现方法

    • 使用Object.keys(obj).slice()分批处理
    • 考虑用Web Worker做非阻塞处理

🌟 2025年新特性尝鲜

Vue 3.4新增了响应式遍历优化

// 现在这样写性能更高哦!
const obj = reactive({ a: 1, b: 2 })
watchEffect(() => {
  for (const key in obj) {
    console.log(key) // 自动追踪依赖
  }
})

✅ 基础遍历用 v-for="(value, key) in obj"
✅ 嵌套数据注意路径写法 data.user.profile
✅ 数组对象混合时注意结构层级
✅ 复杂逻辑先用计算属性处理
✅ 牢记key值和响应式更新规则

下次遇到JSON数据时,希望你能像吃🍰一样轻松搞定!如果还有疑问,评论区见~ ✨

(注:本文示例基于Vue 3.x版本,部分语法在Vue 2中可能需要调整)

发表评论