vue 将数组2中的数据在数组1中查找下,如果没有则添加,否则不添加

vue 将数组2中的数据在数组1中查找下,如果没有则添加,否则不添加

html 复制代码
<template>
  <!-- 这里是你的模板内容 -->
</template>

<script>
export default {
  data() {
    return {
      array1: [1, 2, 3, 4],
      array2: [3, 5, 6, 7],
    };
  },
  methods: {
    mergeUniqueItems() {
      // 创建一个新数组来避免直接修改原数组导致的Vue不能检测到变化的问题
      const newArray = [...this.array1];

      this.array2.forEach(item => {
        // 使用includes方法判断item是否在原数组中存在
        if (!newArray.includes(item)) {
          // 如果不存在,则push进新数组
          newArray.push(item);
        }
      });

      // 更新array1的值
      this.array1 = newArray;
    },
  },
  created() {
    // 在组件创建后立即执行合并操作
    this.mergeUniqueItems();
  },
};
</script>

上述代码中,mergeUniqueItems 方法负责遍历 array2 中的每一项,通过 Array.prototype.includes() 检查 array1 是否已经包含了当前项。如果没包含,则将当前项添加到新建的 newArray 中。最后,将 newArray 赋值给 array1,以更新视图。

在真实的应用场景中,你可能希望在某个事件触发时(比如用户点击按钮)才执行这个合并操作,而不是在 created 生命周期钩子中执行。只需相应地调整调用 mergeUniqueItems 方法的位置即可。

例子:

javascript 复制代码
array1:[{id:1,name:'你好'},{id:2,name:'你好2'}];
array2:[{id:3,name:'哈哈'},{id:2,name:'你好2'}];

将数组array2中的数据添加到array1中,且不重复

在Vue中处理这个问题,我们需要根据对象的id进行去重,因为这里是对象数组,而不仅仅是数值数组。下面是如何实现这个需求的示例代码:

html 复制代码
<template>
  <!-- 这里是你的模板内容 -->
</template>

<script>
export default {
  data() {
    return {
      array1: [{ id: 1, name: '你好' }, { id: 2, name: '你好2' }],
      array2: [{ id: 3, name: '哈哈' }, { id: 2, name: '你好2' }],
    };
  },
  methods: {
    mergeUniqueObjects() {
      // 使用Set结合JSON.stringify实现对象数组去重
      const idsInArray1 = new Set(this.array1.map(item => JSON.stringify(item)));

      // 遍历array2,将不在array1中的对象添加到array1
      this.array2.forEach(item => {
        const stringifiedItem = JSON.stringify(item);
        if (!idsInArray1.has(stringifiedItem)) {
          this.array1.push(item);
          idsInArray1.add(stringifiedItem);
        }
      });
    },
  },
  created() {
    this.mergeUniqueObjects();
  },
};
</script>
相关推荐
anyup_前端梦工厂5 分钟前
从浏览器层面看前端性能:了解 Chrome 组件、多进程与多线程
前端·chrome
zzlyx998 分钟前
.NET 9 微软官方推荐使用 Scalar 替代传统的 Swagger
javascript·microsoft·.net
chengpei14713 分钟前
chrome游览器JSON Formatter插件无效问题排查,FastJsonHttpMessageConverter导致Content-Type返回不正确
java·前端·chrome·spring boot·json
Bunury15 分钟前
组件封装-List
javascript·数据结构·list
我命由我1234522 分钟前
NPM 与 Node.js 版本兼容问题:npm warn cli npm does not support Node.js
前端·javascript·前端框架·npm·node.js·html5·js
每一天,每一步31 分钟前
react antd点击table单元格文字下载指定的excel路径
前端·react.js·excel
浪浪山小白兔32 分钟前
HTML5 语义元素详解
前端·html·html5
小魔女千千鱼1 小时前
【真机调试】前端开发:移动端特殊手机型号有问题,如何在电脑上进行调试?
前端·智能手机·真机调试
16年上任的CTO1 小时前
一文大白话讲清楚webpack基本使用——11——chunkIds和runtimeChunk
前端·webpack·node.js·chunksid·runtimechunk
Orange3015111 小时前
【自己动手开发Webpack插件:开启前端构建工具的个性化定制之旅】
前端·javascript·webpack·typescript·node.js