JS合并两个数组并去重

一、JS合并两个数组

在JS中,可以使用concat()方法将两个数组合并成一个新数组。concat()方法不会改变原数组。示例如下:


const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const arr3 = arr1.concat(arr2);
console.log(arr3); //[1, 2, 3, 4, 5, 6]

二、JS合并两个有序数组

如果需要将两个有序数组合并成一个有序数组,可以使用归并排序法。基本思路是将两个有序数组从头开始比较,将较小的数存入新数组中,并将相应的指针移动一个位置。具体实现如下:


function mergeArr(arr1, arr2) {
  const result = [];
  let i = 0,
    j = 0;
  while (i < arr1.length && j < arr2.length) {
    if (arr1[i] < arr2[j]) {
      result.push(arr1[i++]);
    } else {
      result.push(arr2[j++]);
    }
  }
  while (i < arr1.length) {
    result.push(arr1[i++]);
  }
  while (j < arr2.length) {
    result.push(arr2[j++]);
  }
  return result;
}

const arr1 = [1, 3, 5, 7];
const arr2 = [2, 4, 6, 8];
const arr3 = mergeArr(arr1, arr2);
console.log(arr3); //[1, 2, 3, 4, 5, 6, 7, 8]

三、JS两个数组合并成一个数组

如果两个数组中可能存在相同的元素,可以使用concat()方法将两个数组合并,再使用Set去重。Set是ES6中引入的一种新的数据结构,它类似于数组,但是只能储存唯一的值。具体实现如下:


const arr1 = [1, 2, 3];
const arr2 = [2, 3, 4];
const arr3 = Array.from(new Set(arr1.concat(arr2)));
console.log(arr3); //[1, 2, 3, 4]

四、JS数组去重合并、数组合并去重

如果要直接对已有数组进行去重合并或者合并去重,可以使用Set和扩展运算符。具体实现如下:


const arr1 = [1, 2, 3];
const arr2 = [2, 3, 4];

//数组去重合并
const arr3 = Array.from(new Set([...arr1, ...arr2]));
console.log(arr3); //[1, 2, 3, 4]

//数组合并去重
const arr4 = [...new Set([...arr1, ...arr2])];
console.log(arr4); //[1, 2, 3, 4]

五、JS把两个数组对象合并

如果两个数组中的元素是一个个对象,则需要按照对象的某个属性进行去重。可以将对象转换为字符串再使用Set去重,最后再将字符串重新转换为对象。具体实现如下:


const arr1 = [{id: 1, name: 'Tom'}, {id: 2, name: 'Jerry'}];
const arr2 = [{id: 2, name: 'Jerry'}, {id: 3, name: 'Lucy'}];

//按照id进行去重合并
const arr3 = Array.from(new Set([...arr1.map(JSON.stringify), ...arr2.map(JSON.stringify)])).map(JSON.parse);
console.log(arr3); //[{id: 1, name: 'Tom'}, {id: 2, name: 'Jerry'}, {id: 3, name: 'Lucy'}]

原创文章,作者:FXTCB,如若转载,请注明出处:https://www.506064.com/n/371015.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
FXTCBFXTCB
上一篇 2025-04-23 00:48
下一篇 2025-04-23 00:48

相关推荐

  • JS Proxy(array)用法介绍

    JS Proxy(array)可以说是ES6中非常重要的一个特性,它可以代理一个数组,监听数据变化并进行拦截、处理。在实际开发中,使用Proxy(array)可以方便地实现数据的监…

    编程 2025-04-29
  • 利用Python实现两个链表合并为一个有序链表

    对于开发工程师来说,实现两个链表合并为一个有序链表是必须掌握的技能之一。Python语言在链表处理上非常便利,本文将从多个方面详细阐述如何利用Python实现两个链表合并为一个有序…

    编程 2025-04-29
  • Python导入数组

    本文将为您详细阐述Python导入数组的方法、优势、适用场景等方面,并附上代码示例。 一、numpy库的使用 numpy是Python中一个强大的数学库,其中提供了非常丰富的数学函…

    编程 2025-04-29
  • Python返回数组:一次性搞定多种数据类型

    Python是一种多用途的高级编程语言,具有高效性和易读性的特点,因此被广泛应用于数据科学、机器学习、Web开发、游戏开发等各个领域。其中,Python返回数组也是一项非常强大的功…

    编程 2025-04-29
  • Python去掉数组的中括号

    在Python中,被中括号包裹的数据结构是列表,列表是Python中非常常见的数据类型之一。但是,有些时候我们需要将列表展开成一维的数组,并且去掉中括号。本文将为大家详细介绍如何用…

    编程 2025-04-29
  • Python操作数组

    本文将从多个方面详细介绍如何使用Python操作5个数组成的列表。 一、数组的定义 数组是一种用于存储相同类型数据的数据结构。Python中的数组是通过列表来实现的,列表中可以存放…

    编程 2025-04-29
  • Python定义两个列表的多面探索

    Python是一种强大的编程语言,开放源代码,易于学习和使用。通过Python语言,我们可以定义各种数据类型,如列表(list)。在Python中,列表(list)在处理数据方面起…

    编程 2025-04-29
  • 解析js base64并转成unit

    本文将从多个方面详细介绍js中如何解析base64编码并转成unit格式。 一、base64编码解析 在JavaScript中解析base64编码可以使用atob()函数,它会将b…

    编程 2025-04-29
  • Node.js使用Body-Parser处理HTTP POST请求时,特殊字符无法返回的解决方法

    本文将解决Node.js使用Body-Parser处理HTTP POST请求时,特殊字符无法返回的问题。同时,给出一些相关示例代码,以帮助读者更好的理解并处理这个问题。 一、问题解…

    编程 2025-04-29
  • Python二维数组对齐输出

    本文将从多个方面详细阐述Python二维数组对齐输出的方法与技巧。 一、格式化输出 Python中提供了格式化输出的方法,可以对输出的字符串进行格式化处理。 names = [‘A…

    编程 2025-04-29

发表回复

登录后才能评论