JS数组扁平化、去重、排序操作实例详解

JS数组扁平化、去重、排序操作实例详解

在JS编程中,经常需要对数组进行处理,比如将一个多维数组“扁平化”成一维数组、去掉数组中的重复元素、按照一定规则排序等操作。本文将介绍如何在JS中实现数组的扁平化、去重和排序操作,并给出相应的代码示例。

JS数组扁平化

所谓的数组扁平化,就是将一个嵌套多层的数组变成一个一维数组。比如:

const arr = [1, [2, [3, 4]]];
// 扁平化后的结果为 [1, 2, 3, 4]

下面给出两种实现数组扁平化的方法:

方法一:使用递归

function flat(arr) {
  let result = [];
  for (let i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i])) {
      result = result.concat(flat(arr[i]));
    } else {
      result.push(arr[i]);
    }
  }
  return result;
}

const arr = [1, [2, [3, 4]]];
console.log(flat(arr)); // [1, 2, 3, 4]

方法二:使用Array.prototype.flat方法

const arr = [1, [2, [3, 4]]];
console.log(arr.flat(Infinity)); // [1, 2, 3, 4]

JS数组去重

在JS中,数组去重可以使用Set数据结构或者一些数组去重方法来实现。

方法一:使用Set数据结构

const arr = [1, 2, 3, 2, 1, 4];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4]

方法二:使用Array.prototype.filter方法+indexOf

const arr = [1, 2, 3, 2, 1, 4];
const uniqueArr = arr.filter((item, index, arr) => arr.indexOf(item) === index);
console.log(uniqueArr); // [1, 2, 3, 4]

方法三:使用Array.prototype.filter方法+includes

const arr = [1, 2, 3, 2, 1, 4];
const uniqueArr = arr.filter((item, index, arr) => arr.includes(item, index + 1));
console.log(uniqueArr); // [1, 2, 3, 4]

JS数组排序

在JS中,可以使用Array.prototype.sort方法实现数组排序。

排序方法一:按照升序排序

const arr = [5, 2, 3, 1, 4];
arr.sort((a, b) => a - b);
console.log(arr); // [1, 2, 3, 4, 5]

排序方法二:按照降序排序

const arr = [5, 2, 3, 1, 4];
arr.sort((a, b) => b - a);
console.log(arr); // [5, 4, 3, 2, 1]

至此,我们已经学习了JS数组的扁平化、去重和排序操作,希望对大家的实际开发有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS数组扁平化、去重、排序操作实例详解 - Python技术站

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

相关文章

  • js定时器出现第一次延迟的原因及解决方法

    JS定时器出现第一次延迟的原因是:浏览器在解释JavaScript代码时,会从上到下依次执行,而定时器是一种异步事件,会被放到事件队列中,等待JavaScript引擎空闲时才会执行。因此,定时器第一次执行会有一段时间的等待。 解决方法则是使用setTimeout()或setInterval()方法,并通过调用一次函数来解决此问题。 示例1:使用setTime…

    JavaScript 2023年6月11日
    00
  • eval(function(p,a,c,k,e,d)系列解密javascript程序

    “eval(function(p,a,c,k,e,d)系列解密javascript程序”是一种常见的JavaScript代码混淆技术,其目的是为了防止源代码被轻易的阅读和修改而被应用于网络安全或代码保护场景中。下面是其详细的攻略流程。 步骤一: 代码检测 首先需要对目标网站的页面源代码进行检测,查找是否存在 “eval(function(p,a,c,k,e,…

    JavaScript 2023年5月19日
    00
  • 如何配置jsconfig.json文件解决VSCode中无法识别@别名引用的问题

    在现代web开发中,使用别名来引用模块已经成为了一个非常常见的做法。这样可以使得代码更加易读、易维护。然而,在使用VSCode进行开发时,如果不正确地配置jsconfig.json文件,就会遇到一些问题。 其中一个比较常见的问题是,在使用“@”符号来引用模块时,无法通过Ctrl + 点击来跳转到相应的文件。这是因为默认情况下,VSCode无法识别这个“@”符…

    JavaScript 2023年4月17日
    00
  • JavaScript高级程序设计 事件学习笔记

    《JavaScript高级程序设计》事件学习笔记 什么是事件? 事件是指在网页中发生的交互的行为,比如页面的加载、点击按钮、鼠标滚动等,这些行为就是事件。 事件监听器 事件监听器是用来监听特定事件并处理事件的函数。可以通过给元素添加事件监听器来创建响应用户操作的交互式网页。 在 JavaScript 中,我们可以使用 addEventListener() 方…

    JavaScript 2023年5月27日
    00
  • ES7之Async/await的使用详解

    ES7之Async/await的使用详解 什么是Async/await Async/await是ES7中引入的一组用于异步操作的新关键字。它们可以让我们更方便、更优雅地处理异步代码,避免了回调地狱(callback hell)的问题。 Async/await的基本用法 要使用Async/await,我们首先需要使用async关键字定义一个异步函数,函数中使用…

    JavaScript 2023年6月10日
    00
  • js事件on动态绑定数据,绑定多个事件的方法

    JavaScript中的事件机制是常见的Web前端开发基础,通过on事件可以实现动态绑定事件,并绑定多个事件,以下是详细的攻略: 1. on动态绑定数据 on事件可以通过DOM元素的属性方式进行设置,同时这个属性名称也必须遵循on开头的规则,如onclick、onload等。此外,我们还可以利用JavaScript的编程方式来实现事件的绑定。 以下是一个基本…

    JavaScript 2023年6月11日
    00
  • js 获取时间间隔实现代码

    获取时间间隔是在 Web 开发中比较常见的需求,例如计算两个时间之间的间隔、统计页面加载时间等,以下是详细的实现代码攻略: 获取当前时间的时间戳 在 JavaScript 中获取当前时间的时间戳可以使用 Date 对象的 getTime() 方法: // 获取当前时间的时间戳(毫秒数) var now = Date.now(); // 或者 var now …

    JavaScript 2023年5月27日
    00
  • JS DOMReady事件的六种实现方法总结

    下面我将详细讲解“JS DOMReady事件的六种实现方法总结”的攻略。 一、什么是DOMReady事件? DOMReady事件是指在页面中DOM树加载完成后触发的事件。在此时我们可以对页面中的DOM元素进行操作。 二、JS DOMReady事件的六种实现方法 1. 利用window.onload事件 window.onload = function() {…

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