IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 数组嵌套对象 对象里面嵌套数组 合 添加的数组(数组对象) 判断重复 并添加 ------项目中的遇到情况 -> 正文阅读

[JavaScript知识库]数组嵌套对象 对象里面嵌套数组 合 添加的数组(数组对象) 判断重复 并添加 ------项目中的遇到情况

涉及的情况

这种情况 是确保添加的数据和 原数组中结构是

//这里的结构就是实际结构
//这是往里面添加的结构的结构
data:{
   item:[{
         mag:[{},{},....],
         title:''
        },
        {
         mag:[{},{},....],
         title:''
        },.......]
}
//添加的按数据结构
data:[{},{}]
  • 1.借助子组件传值 情况 (弹框是子组件 点击确定 传到 父组件里面)
//子组件
1.保存  点击按钮
 <el-button type="primary" @click="save">确 定</el-button>
方法  methods

   save() {
        this.$emit('tableList', this.list_main)
        //  传到父组件     this.list_main: 传到父组件的数据   tableList:点击事件
        this.close()
      },

//父组件
2.在父组件中引入
  import SelectContentEdit from './components/selectContentEdit'  
  
  <SelectContentEdit
      ref="SelectContentEdit"
      :items="form.titleItems"
      @tableList="tableList"
    ></SelectContentEdit>
 //@tableList="tableList":子组件传到父组件里面的 保存的方法


方法 methods 
 tableList(data) {
        this.listLoading = true
        console.log(this.flagCount, 'res', data)
        //  判断第一次  和之后添加的数据 遍历数组 ids  
        if (this.flagCount.length) {
         //  判断新增的 和之前保存的  是否存在id 一样
          for (let i = 0; i < this.flagCount.length; i++) {
            let arr = data.find((item) => {
              return item.questionId === this.flagCount[i]
            })
           //如果一样 就说明  存在  提示
            if (arr) {
              this.$baseMessage('已存在,请重新选择', 'error')
              return
            }
          }
        }
        // 如果this.flagCount 没有值  就添加
        this.form.titleItems.map((item, index) => {
          if (index == this.indexCount) {
          //这里是添加  传过来的数据
            this.form.titleItems[this.indexCount].paperQuestionList.push(
              ...data
            )
            let arr = this.form.titleItems[this.indexCount].paperQuestionList
            //去重
            let newobj = {}
            this.form.titleItems[this.indexCount].paperQuestionList =
              arr.reduce((preVal, curVal) => {
                newobj[curVal.questionId]
                  ? ''
                  : (newobj[curVal.questionId] = preVal.push(curVal))
                return preVal
              }, [])
              //在每个this.form.titleItems[this.indexCount].paperQuestionList里面去追加
              //questionId
            this.form.titleItems[this.indexCount].paperQuestionList.forEach(
              (item, index) => {
                Object.assign(item, { questionId: item.questionId })
              }
            )
          }
        })
        //刚开始没有数据
        //第一次添加时 保存选中的id 放到一个数组里面
        let ids = data.map((item) => item.questionId)
        //this.flagCount是第一次之后和之后添加的报存在一块并重复去重 用来保存添加id 数组  
        //在data中定义的
        this.flagCount = [...this.flagCount, ...ids]
        this.getTotalSore()
        setTimeout(() => {
          this.listLoading = false
        }, 300)
      },

待更新。。。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:21:48  更:2022-05-11 16:22:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:32:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码