js中数组对象去重的两种方法

讲解“js中数组对象去重的两种方法”的完整攻略。

1.方法1:使用Set

JavaScript中的Set是一种可以存储不重复值的集合。因此,可以通过Set来去重。

示例代码

const arr = [{id:1,name:'test'},{id:2,name:'test'},{id:1,name:'test'}]
const newArr = Array.from(new Set(arr.map(JSON.stringify))).map(JSON.parse)
console.log(newArr)

代码说明

首先使用map方法将数组中的对象转化为字符串。因为Set里默认只定义字符串,无法对对象去重。

然后使用Set方法,对其进行去重处理。

最后将Set转化为数组,再使用map方法将每项转化为对象。

2.方法2:使用reduce方法

使用reduce方法来对原数组进行去重处理,具体过程如下。

示例代码

const arr = [{id:1,name:'test'},{id:2,name:'test'},{id:1,name:'test'}]
const newArr = arr.reduce((result,current)=>{
   const len = result.length
   const isExist = result.some(item => item.id === current.id)
   if(!isExist){
     len === result.length && result.push(current)
   }
   return result
},[])
console.log(newArr)

代码说明

使用reduce方法遍历原数组,传入的第二个参数是数组初始值,这里为空数组[]。

在每次遍历时,判断result数组中是否已经存在该项,如果不存在则加入到result数组中。

最后返回去重后的新数组。

以上是两种去重方法的详细介绍。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js中数组对象去重的两种方法 - Python技术站

(0)
上一篇 2天前
下一篇 2天前

相关文章

  • 比较详细的javascript DOM 学习笔记第1/2页

    你好,以下是详细的 “比较详细的JavaScript DOM学习笔记第1/2页” 完整攻略: 目录 DOM介绍 DOM节点操作 DOM样式修改 事件处理 AJAX与DOM 1. DOM介绍 DOM(文档对象模型)是指HTML文档的对象模型。浏览器加载HTML文件后,会生成一颗DOM树。这棵树包含了文档的所有元素,每个节点都是一个对象,开发者可以通过JavaS…

    JavaScript 2023年5月18日
    00
  • 放弃 console.log 吧!用 Debugger 你能读懂各种源码

    很多同学不知道为什么要用 debugger 来调试,console.log 不行么? 还有,会用 debugger 了,还是有很多代码看不懂,如何调试复杂源码呢? 这篇文章就来讲一下为什么要用这些调试工具: console.log vs Debugger 相信绝大多数同学使用 console.log 调试的,把想看的变量值打印在控制台。 这样能满足需求,但是…

    JavaScript 2023年4月17日
    00
  • JavaScript 自动完成脚本整理(33个)

    JavaScript 自动完成脚本整理(33个) 完整攻略 简介 自动完成是指在用户输入时,自动帮助用户补全已知的完整表达。这在网页制作中特别常见,利用 JavaScript 可以很容易地实现自动完成。 本攻略将介绍 JavaScript 中的33个自动完成脚本整理,包含输入提示,模糊搜索等常用自动完成功能的实现方式。下面进行详细讲解。 代码实现 1. 使用…

    JavaScript 1天前
    00
  • JavaScript常见手写题超全汇总

    JavaScript常见手写题超全汇总 1. 前言 在面试以及实际工作中,常常需要手写一些核心的JavaScript代码。这些手写题目可能比较简单、或者非常复杂,但是它们都对JavaScript基础功夫有一个更加深刻的理解。 在本篇文章中,我们将会汇总一些常见的JavaScript手写题,包括但不限于:数组去重、深拷贝、Promise实现、函数柯里化等等。 …

    JavaScript 2023年5月18日
    00
  • Js数组扁平化实现方法代码总汇

    当我们需要将一个多维数组(嵌套数组)转换成一维数组时,我们需要用到数组扁平化操作。JavaScript中有多种实现数组扁平化的方法,本文将会总结并介绍这些方法。 基础方法——递归 递归是最基础也是最直观的方法。 function flatten(arr) { var result = []; for (var i = 0, len = arr.length;…

    JavaScript 1天前
    00
  • 突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述

    Web Worker是HTML5中为JavaScript提供的多线程的解决方案之一,可以将一些复杂和耗时的任务在独立的线程中进行,以提高整个系统的响应速度。该技术可以通过JavaScript API进行调用。 Web Worker概述 Web Worker包含两种类型: 主线程中的Worker 普通的Web Worker 其中,主线程中的Worker用于加载…

    JavaScript 1天前
    00
  • 图解JavaScript中的this关键字

    图解JavaScript中的this关键字 在JavaScript中,this关键字是一个非常重要和常用的概念。this关键字代表着当前调用函数的对象。但是,由于JavaScript中函数的灵活性,this的值有时会令人不太容易理解和把握。本文将图解this的实际应用及其背后的原理,帮助读者更好地理解和应用this关键字。 this的取值方式 JavaScr…

    JavaScript 1天前
    00
  • JavaScript实现页面跳转的几种常用方式

    下面是讲解“JavaScript实现页面跳转的几种常用方式”的完整攻略。 一、直接修改location.href属性 我们可以使用JavaScript代码直接修改当前页面的location.href属性,实现页面的跳转。示例代码如下: // 直接跳转到指定URL的页面 location.href = ‘https://www.example.com’; //…

    JavaScript 2天前
    00
  • JS创建对象的四种方式

    以下是“JS创建对象的四种方式”的完整攻略: 1. 对象字面量 对象字面量是一种最简单的对象创建方式,就是直接在代码中书写一个对象。具体格式如下: let obj = { key1: ‘value1’, key2: ‘value2’, key3: function() { console.log(‘this is a method’); } } 其中,对象中…

    JavaScript 2天前
    00
  • JavaScript前端超时异步操作完美解决过程

    JavaScript前端超时异步操作完美解决需要使用到Promise和async/await两种技术,下面我会分几个步骤来详细讲解: 第一步:了解问题 前端异步请求是常见的操作,但遇到超时问题需要进行特殊处理。通常情况下采用回调函数或者Promise来解决超时问题,但是它们都存在一些缺点,例如回调函数可能会导致回调地狱,而Promise虽然避免了回调地狱的问…

    JavaScript 2023年5月18日
    00