JS两个数组比较,删除重复值的巧妙方法(推荐)

JS两个数组比较,删除重复值是一个常见的问题。以下是一个使用巧妙方法的攻略:

步骤1:创建两个待比较的数组

首先,您需要定义两个数组,分别是要比较的源数组和目标数组。例如:

const sourceArray = [1, 2, 3, 4, 5];
const targetArray = [3, 4, 5, 6, 7];

步骤2: 使用filter方法进行比较

接下来,您可以使用数组的filter方法来比较两个数组,并返回不同的部分。这个方法遍历源数组,并返回一个新的数组,该数组只包含目标数组中没有的元素。例如:

const difference = sourceArray.filter(x => !targetArray.includes(x));

在这个示例中,我们使用箭头函数来检查源数组中的每个元素是否包含在目标数组中。如果元素不在目标数组中,则将其包含在返回的新数组中。

步骤3: 删除重复值

最后,您可以使用set对象来删除新数组中的重复项。set对象是一种以键值对形式储存唯一值的集合,在这里我们用它来去掉新数组中的重复项。例如:

const uniqueDifference = [...new Set(difference)];

在这个示例中,我们使用扩展运算符来将set对象转换为数组,并创建一个新的唯一值数组。

示例1:字符串数组比较

下面是一个使用字符串数组的示例。我们将比较两个字符串数组,并删除重复值。

const sourceArray = ['apple', 'banana', 'pear', 'orange'];
const targetArray = ['pear', 'orange', 'grape', 'banana'];

const difference = sourceArray.filter(x => !targetArray.includes(x));
const uniqueDifference = [...new Set(difference)];

console.log(uniqueDifference); // ["apple"]

在这个示例中,我们使用同样的方法,只不过是将源数组和目标数组换成了一个字符串数组。

示例2:对象数组比较

下面是一个使用对象数组的示例。我们将比较两个对象数组,并删除重复值。在这个示例中,我们使用对象的id属性来唯一标识每个对象。

const sourceArray = [{id: 1, name: 'apple'}, {id: 2, name: 'banana'}, {id: 3, name: 'pear'}, {id: 4, name: 'orange'}];
const targetArray = [{id: 3, name: 'pear'}, {id: 4, name: 'orange'}, {id: 5, name: 'grape'}, {id: 6, name: 'pineapple'}];

const difference = sourceArray.filter(x => !targetArray.some(y => y.id === x.id));
const uniqueDifference = [...new Set(difference)];

console.log(uniqueDifference); // [{id: 1, name: 'apple'}, {id: 2, name: 'banana'}]

在这个示例中,我们使用some方法来比较id属性,而不是includes方法。some方法遍历目标数组中的每个元素,如果任何一个元素的id属性等于源数组中的元素,则返回true。我们使用filter方法来保存源数组中那些在目标数组中不存在的元素,然后使用set对象来去掉重复值。

这就是使用巧妙方法比较JS的两个数组,并删除重复项的攻略!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS两个数组比较,删除重复值的巧妙方法(推荐) - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JavaScript组合拼接字符串的效率对比测试

    这里是“JavaScript组合拼接字符串的效率对比测试”的完整攻略。 前言 在实际前端项目中,字符串拼接是很常见的操作。比如说,在渲染页面的时候,需要将一些字符串拼接后放到标签属性里;或者需要将字符串作为参数传递给后端接口。有经验的前端工程师都知道,正确使用字符串拼接可以使得程序运行更快。因此,在本文中,我们将会比较常用的几种字符串拼接方法,以了解它们的效…

    JavaScript 2023年5月28日
    00
  • bootstrap laydate日期组件使用详解

    Bootstrap LayDate日期组件使用详解 在本文中,我们将会学习如何在HTML页面中使用LayDate日期组件,该组件基于Bootstrap框架,提供了强大的日期选择功能和美观的UI界面。 步骤一:引入LayDate的依赖文件 在使用LayDate之前,需要在HTML页面中引入相关的依赖文件。这些文件包括LayDate的CSS文件和JS文件,以及L…

    JavaScript 2023年6月10日
    00
  • 判断目标是否是window,document,和拥有tagName的Element的代码

    判断目标是否是 Window, Document 和拥有 tagName 的 Element 是前端开发中一种常见的操作,以下是该操作的完整攻略: 1. 判断目标是否是 Window 对象 判断一个对象是否是 Window 对象,可以通过将该对象与全局的 window 对象进行比较,相关代码如下: function isWindow(obj) { retur…

    JavaScript 2023年6月10日
    00
  • json数据处理及数据绑定

    下面是关于”json数据处理及数据绑定”的完整攻略。 什么是JSON数据? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript语言对象的表示法,但是独立于JavaScript并且易于理解和使用。JSON格式常用于前端开发中,用于数据传输和存储,是一种常用的数据格式。 JSON格式的数据包含键…

    JavaScript 2023年5月27日
    00
  • python爬虫selenium和phantomJs使用方法解析

    Python爬虫使用Selenium和PhantomJS解析 前言 爬虫是信息搜集和数据挖掘的重要手段,而python作为目前应用范围最广的编程语言,也拥有非常丰富的爬虫套件。其中,Selenium和PhantomJS是两个非常重要的工具,本篇文章将详细介绍它们的使用方法。 Selenium简介 Selenium是一款用于Web应用程序测试的工具,它模拟了用…

    JavaScript 2023年6月11日
    00
  • 浅谈Javascript 执行顺序

    浅谈JavaScript 执行顺序 在JavaScript中,代码执行的顺序可以影响到程序的执行结果。具体来说,程序在执行时会按照一定的顺序依次执行各个语句。本文将深入讲解JavaScript中的执行顺序。 代码执行阶段 代码执行阶段可以分为两个阶段: 解析阶段 执行阶段 其中,解析阶段是将代码转化成抽象语法树(AST),并进行语义分析,确定变量、函数等的声…

    JavaScript 2023年5月18日
    00
  • 详解TS对象扩展运算符和rest运算符

    详解TS对象扩展运算符和rest运算符 什么是对象扩展运算符和rest运算符 对象扩展运算符(也称为Spread运算符)和rest运算符(也称为剩余参数运算符)都是ES6新增的两种运算符。它们可以用于处理对象或数组中的元素,让代码更加简洁易读,常见于函数参数和数组/对象合并操作。 简单来说,对象扩展运算符可以将一个对象展开成多个对象,而rest运算符则可以将…

    JavaScript 2023年6月10日
    00
  • 微信小程序开发之改变data中数组或对象的某一属性值

    下面是详细讲解微信小程序开发中改变 data 中数组或对象的某一属性值的完整攻略。 前置知识 在深入讲解如何改变 data 中数组或对象的某一属性值之前,我们需要先了解微信小程序中 data 的用法。在微信小程序中,通过给 Page() 函数传入一个对象,该对象中的 data 属性就是页面的初始数据。 定义 data 对象后,开发者可以通过 this.dat…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部