JS实现数组去重及数组内对象去重功能示例

yizhihongxing

JS实现数组去重及数组内对象去重功能示例攻略

在JavaScript中,我们经常会用到数组。但是,数组中如果有重复的元素会影响我们的数据操作,因此我们需要进行数组去重操作。在这篇攻略中,我将向您展示如何使用JavaScript实现数组去重及数组内对象去重功能,希望能帮助您更好地理解和应用JS。

数组去重

方法一:使用Set

使用Set可以很方便地去除数组中的重复元素。Set是一种无序且不重复的数据集合。可以使用Set()构造函数创建一个新的Set对象,将数组传入Set()即可将数组去重。具体代码如下:

let arr = [1, 2, 3, 4, 5, 2, 3];
let newArr = [...new Set(arr)];
console.log(newArr); //输出[1, 2, 3, 4, 5]

上述代码中,使用ES6语法解构赋值获取Set返回的集合。Set的特性保证了数组内不会存在重复元素。

方法二:使用Array.filter()

使用Array.filter()方法可以筛选数组中满足条件的元素。先获取数组中第一个元素作为基准元素,循环遍历数组,将不等于基准元素的元素筛选出来,最后将筛选后的数组元素进行集合即可。具体代码如下:

let arr = [1, 2, 3, 4, 5, 2, 3];
let newArr = arr.filter(function (element, index, self) {
   return self.indexOf(element) === index;  // 如果找到了这个元素的下标等于当前元素位置,则说明这个元素是首次出现的,保留 
});
console.log(newArr); //输出[1, 2, 3, 4, 5]

方法三:使用Map

使用Map也可以实现去重操作。我们可以使用Map数据结构的“键”不会重复的特性,将数组中的元素放到Map中做“键”,再获取Map的键即可。如果数组中元素去重后,键和元素是一一对应的,说明去重成功,代码如下:

let arr = [1, 2, 3, 4, 5, 2, 3];
let map = new Map();
let newArr = [];
for (let i = 0; i < arr.length; i++) {
    if (!map.has(arr[i])) {  // 如果map中不存在当前值 
        map.set(arr[i], true); // 把当前元素作为键放入 map 
        newArr.push(arr[i]);  // 把当前元素放入 newArr 
    }
}
console.log(newArr); //输出[1, 2, 3, 4, 5]

数组内对象去重

如果数组内部是对象,我们需要按照对象的某个属性进行去重。例如数组内的对象结构如下:

let arr = [
    {id: 1, name: 'A'},
    {id: 1, name: 'A'},
    {id: 2, name: 'B'},
    {id: 2, name: 'C'},
    {id: 3, name: 'B'}
];

我们需要依据对象中的id属性,将id相同的元素去重。具体代码如下:

function uniqueArray(arr, key) {
  return arr.filter((element, index, self) => {
    return self.findIndex(item => item[key] === element[key]) === index;
  });
}

let newArr = uniqueArray(arr, 'id');
console.log(newArr); 

我们通过在 uniqueArray 函数中使用 Array.filter 方法筛选出满足条件(即id不重复)的数组元素,再返回新的不重复的数组。这里我们使用了函数式编程的思想,使代码量更加简洁。

另外,如果我们需要按照多个属性进行去重呢?在这种情况下,可以扩展一下 uniqueArray 函数,将 key 变成一个数组,然后循环使用 findIndex 方法进行筛选即可。

function uniqueArray(arr, keys) {
  return arr.filter((element, index, self) => {
    return self.findIndex(item => JSON.stringify(item, keys) === JSON.stringify(element, keys)) === index;
  });
}

let newArr = uniqueArray(arr, ['id', 'name']);
console.log(newArr); 

上述代码中,我们使用了JSON.stringify()方法将对象序列化成字符串,在进行比较。比较操作时传入了keys数组,表示只比较keys数组内的属性。

到此,我们已经完成了JS实现数组去重及数组内对象去重的示例攻略。希望能对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现数组去重及数组内对象去重功能示例 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)

    我们来详细讲解一下JavaScript定时器SetTimeout之定时刷新窗口和关闭窗口的攻略。 首先,什么是setTimeout呢?setTimeout() 是 JavaScript 中的一个函数,它可以在一定的时间间隔之后执行一次函数或者是多次执行一个函数。这里的时间间隔是以毫秒为单位。 接下来,我们来说明一下如何使用setTimeout函数来定时刷新窗…

    JavaScript 2023年6月11日
    00
  • JS学习之一个简易的日历控件

    下面是针对“JS学习之一个简易的日历控件”的完整攻略。 介绍 这是一篇教程,讲解如何使用JavaScript实现一个简易的日历控件。通过阅读教程,您将学会以下内容: 理解日历的基本概念和操作 创建一个日历控件的HTML结构 通过JavaScript实现控件的基本功能和逻辑 通过这个教程,您将同时学习到HTML和JavaScript的知识,提高自己的前端开发技…

    JavaScript 2023年5月27日
    00
  • JS获取时间的相关函数及时间戳与时间日期之间的转换

    获取时间的相关函数及时间戳与时间日期之间的转换 在JavaScript中,获取时间的方法非常多,包括获取时间戳、获取当前日期时间等。下面我们来依次介绍这些函数。 1.获取时间戳: 时间戳指的是距离1970年1月1日0时0分0秒(UTC时间)的时间差,单位为毫秒。获取时间戳有两种方式: (1) Date.now() 函数 这个函数返回当前时间的时间戳,它等价于…

    JavaScript 2023年5月27日
    00
  • countup.js实现数字动态叠加效果

    我来详细讲解一下“countup.js实现数字动态叠加效果”的完整攻略: 准备工作 首先,我们需要将countup.js引入到网页中。可以使用npm进行安装,也可以使用CDN链接进行引入。 <script src="https://cdn.jsdelivr.net/npm/countup.js@2.0.7/dist/countUp.min.j…

    JavaScript 2023年6月11日
    00
  • 简短几句 通俗解释javascript的闭包

    下面是详细讲解JavaScript闭包的完整攻略: 什么是闭包? 闭包(closure)是指函数能够访问并使用其自身定义范围之外的变量。 JavaScript 中的每个函数都是一种闭包,将函数作为参数或从函数中返回函数时常会用到闭包的知识。 闭包示例1 例如,下面的代码定义了一个 name 变量,并在函数中创建了一个内部函数,返回的函数能够访问并使用 nam…

    JavaScript 2023年6月10日
    00
  • 微信小程序 template模板详解及实例代码

    下面我将详细讲解“微信小程序 template模板详解及实例代码”的完整攻略。 1. 什么是小程序模板 小程序模板是指微信小程序官方提供的预设页模板,可以帮助开发者快速构建页面,减少开发者的工作量,提高开发效率。小程序模板包括常用的列表、表单、详情页、搜索等页面,并且每个模板的样式和交互都已经进行了基本的设计和实现。 2. 如何使用模板 使用小程序模板可以通…

    JavaScript 2023年6月11日
    00
  • js运动事件函数详解

    JS运动事件函数详解 在JS中,事件函数是编写交互逻辑的重要部分。其中,运动事件函数可以实现对象的平移、缩放、旋转等效果。本文将详细讲解JS中的运动事件函数,包括常见的函数、使用注意事项和两个示例说明。 常见的运动事件函数 以下是JS常用的运动事件函数: setInterval():重复调用一个函数或执行一段代码,间隔一定的时间(以毫秒为单位)。 setTi…

    JavaScript 2023年5月27日
    00
  • javascript学习笔记(三)显示当时时间的代码

    下面是关于“javascript学习笔记(三)显示当时时间的代码”的完整攻略。 前置知识 在学习本文之前,你需要掌握以下知识: HTML 基础 CSS 基础 Javascript 语法基础 确定功能 在开始编写代码之前,我们需要确定显示当前时间的具体功能。 我们要实现的功能是:在页面上显示当前的时间,并且能够实时更新。 编写代码 HTML结构 在HTML中,…

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