Vue 通过公共字段,拼接两个对象数组的实例

yizhihongxing

要完成“Vue 通过公共字段,拼接两个对象数组”的操作,可以使用Vue中的计算属性来实现。

  1. 在Vue实例的data中定义两个对象数组:
data: {
  arr1: [
    { id: 1, name: 'A', age: 20 },
    { id: 2, name: 'B', age: 22 },
    { id: 3, name: 'C', age: 18 },
  ],
  arr2: [
    { id: 1, address: 'Beijing', sex: 'M' },
    { id: 2, address: 'Shanghai', sex: 'F' },
    { id: 3, address: 'Guangzhou', sex: 'M' },
  ]
}
  1. 定义计算属性,通过两个数组的id字段来组合新的数组:
computed: {
  newArr: function() {
    let resArr = []
    for(let i = 0; i < this.arr1.length; i++) {
      let obj = {}
      obj = Object.assign({}, this.arr1[i])
      for(let j = 0; j < this.arr2.length; j++) {
        if(this.arr1[i].id === this.arr2[j].id) {
          obj = Object.assign(obj, this.arr2[j])
        }
      }
      resArr.push(obj)
    }
    return resArr
  }
}

这段代码中,我们先定义一个空数组resArr,然后遍历arr1中的每一个对象,在遍历过程中,将arr1中当前对象的信息复制到一个新的obj对象中,然后再遍历arr2中的每一个对象,如果在arr2中找到了与arr1中当前对象id相同的对象,就将这个对象的信息复制到obj对象中,最后将obj对象push到resArr数组中。最后返回新的resArr数组,即为两个数组拼接后的结果。

  1. 在视图中使用新数组:
<ul>
  <li v-for="item in newArr" :key="item.id">
    {{item.name}}, {{item.age}}, {{item.address}}, {{item.sex}}
  </li>
</ul>

这样,我们就可以在Vue的视图中展示拼接后的新数组了。

示例1:

假设我们有一个商品列表和一个该商品的库存列表,两个列表的信息都需要展示在同一个页面上。这时,我们可以通过Vue实现两个数组的拼接,展示出商品和库存信息的列表。

data: {
  productList: [
    { id: 1, name: 'iPhone X', price: 8999 },
    { id: 2, name: 'iPad Pro', price: 5599 },
    { id: 3, name: 'MacBook Pro', price: 15999 },
  ],
  stockList: [
    { id: 1, stock: 1000 },
    { id: 2, stock: 500 },
    { id: 3, stock: 100 },
  ]
}
computed: {
  proList: function() {
    let resArr = []
    for(let i = 0; i < this.productList.length; i++) {
      let obj = {}
      obj = Object.assign({}, this.productList[i])
      for(let j = 0; j < this.stockList.length; j++) {
        if(this.productList[i].id === this.stockList[j].id) {
          obj = Object.assign(obj, this.stockList[j])
        }
      }
      resArr.push(obj)
    }
    return resArr
  }
}
<ul>
  <li v-for="item in proList" :key="item.id">
    {{item.name}}, {{item.price}}元, 库存:{{item.stock}}件
  </li>
</ul>

示例2:

假设我们需要展示一个学生信息列表,在学生信息中需要展示学生姓名、年龄和性别,还需要展示该学生所在班级的信息(包括班级名称、年级和所选课程)。我们有两个数组,一个保存学生信息,一个保存班级信息,两个数组通过班级号码联合起来。这时,我们可以通过Vue实现两个数组的拼接,展示出完整的学生信息列表。

data: {
  stuList: [
    { id: 1, name: '小明', age: 18, sex: 'M', class_id: 1 },
    { id: 2, name: '小红', age: 19, sex: 'F', class_id: 2 },
    { id: 3, name: '小刚', age: 20, sex: 'M', class_id: 2 },
    { id: 4, name: '小花', age: 18, sex: 'F', class_id: 1 },
  ],
  classList: [
    { id: 1, grade: '高一', name: '1班', course: '数学、语文、英语' },
    { id: 2, grade: '高一', name: '2班', course: '物理、化学、生物' },
  ]
}
computed: {
  fullStuList: function() {
    let resArr = []
    for(let i = 0; i < this.stuList.length; i++) {
      let obj = {}
      obj = Object.assign({}, this.stuList[i])
      for(let j = 0; j < this.classList.length; j++) {
        if(this.stuList[i].class_id === this.classList[j].id) {
          obj = Object.assign(obj, this.classList[j])
        }
      }
      resArr.push(obj)
    }
    return resArr
  }
}
<ul>
  <li v-for="item in fullStuList" :key="item.id">
    {{item.name}}, {{item.age}}岁, {{item.sex}}, {{item.grade}}{{item.name}},选修{{item.course}}
  </li>
</ul>

这样,我们就可以在Vue的视图中展示完整的学生信息了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue 通过公共字段,拼接两个对象数组的实例 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Vue 图片压缩并上传至服务器功能

    下面是 Vue 图片压缩并上传至服务器的完整攻略。 1. 安装必要的库和工具 在使用 Vue 图片压缩并上传至服务器功能之前,需要确保已经安装以下必要的库和工具: vue: Vue.js 框架 axios: HTTP 请求库 compressorjs: 图片压缩库,用来将图片压缩至指定的大小 qs: Querystring 库,用来序列化表单数据 multe…

    Vue 2023年5月27日
    00
  • vue 数据(data)赋值问题的解决方案

    下面是关于“vue 数据(data)赋值问题的解决方案”的完整攻略,主要包括以下方面的内容: 问题背景 解决方案原理 解决方案具体实现及示例说明 总结 问题背景 在vue项目开发中,我们常常会遇到在方法中通过this.data的方式来赋值的问题。这种方式在大量运用时常常使代码变得很难维护。因此,我们需要了解如何通过一些方法或工具来解决数据赋值问题。 解决方案…

    Vue 2023年5月28日
    00
  • Vue组件通信$attrs、$listeners实现原理解析

    我来为您详细讲解“Vue组件通信$attrs、$listeners实现原理解析”的完整攻略。 一、背景介绍 在Vue组件的开发中,如何实现父子组件之间的通信一直是一个比较困扰开发者的难点。Vue官方提供的有prop、$emit、$parent/$children、$refs等方法,而$attrs和$listeners则是比较特殊的属性,不仅可以实现父子组件的…

    Vue 2023年5月28日
    00
  • mini-vue渲染的简易实现

    下面是关于“mini-vue渲染的简易实现”的完整攻略。 概述 mini-vue是我们自己实现的一个简化版Vue。Vue是一个流行的JavaScript框架,它使我们能够轻松地构建响应式的用户界面。而mini-vue则是Vue框架的简化版,它提供了最基本的功能。 本攻略将会介绍如何使用mini-vue来实现基本的渲染功能。这包括创建Vue实例、模板解析和挂载…

    Vue 2023年5月27日
    00
  • Vue 解决在element中使用$notify在提示信息中换行问题

    要在 element-ui 的 $notify 中进行换行,可以使用 html 标签进行内容换行。但是,直接在 $notify 中插入 html 标签会将其解析为字符串,而不是渲染成为 html 元素。因此许多人会通过使用 dangerouslyUseHTMLString 属性,来将 <br> 等 html 标签渲染为真正的 html 元素。 以…

    Vue 2023年5月27日
    00
  • 一文详解Vue选项式 API 的生命周期选项和组合式API

    一文详解Vue选项式 API 的生命周期选项和组合式API 前言 Vue 3.0 正式版发布后,options API 和 composition API 成为开发者最热门的讨论话题。Options API 是 Vue 2.x 默认使用的 API,而在 Vue 3.0 中引入了 Composition API,可谓是 Vue 3.0 的一大亮点。两种 API…

    Vue 2023年5月29日
    00
  • vue将文件/图片批量打包下载zip的教程

    对于vue将文件/图片批量打包下载zip的教程,我可以提供以下完整攻略: 准备工作 在开始介绍具体教程前,需要先以下准备工作: 安装Node.js,因为使用了一些Node.js的依赖包; 在Vue项目中,安装JSZip。在命令行中输入以下命令即可: npm install jszip 实现过程 接下来,我来介绍具体实现步骤: 定义一个下载方法,可以在Vue组…

    Vue 2023年5月28日
    00
  • 基于JWT的spring boot权限验证技术实现教程

    我将为您详细讲解如何实现基于JWT的Spring Boot权限验证技术。 1. JWT 的概念 JWT(JSON Web Token)是一种使用 JSON 格式编写的 token(令牌)标准,并且可被用于浏览器和移动端之间的身份认证。 JWT 由三部分组成:头部(header)、载荷(payload)和签名(signature)。 头部(header):包含…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部