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

yizhihongxing

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日

相关文章

  • javascript中运用闭包和自执行函数解决大量的全局变量问题

    当我们在JavaScript中编写代码时,如果不使用闭包或自执行函数,大量的全局变量就会污染全局命名空间,导致代码难以维护、调试和重构。因此,我们需要使用闭包或自执行函数来保持代码的可读性、可维护性,并且保护全局命名空间。下面是使用闭包和自执行函数解决全局变量问题的攻略: 1. 使用闭包 1.1 什么是闭包? 闭包是指在函数内部创建另一个函数,该函数可以访问…

    JavaScript 2023年6月10日
    00
  • Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)

    下面我将详细讲解 Javascript DOM 事件操作的小结,主要包括监听鼠标点击、释放,悬停、离开等事件的监听方式和应用场景。 什么是DOM事件 DOM事件是用户与网页交互的过程中所产生的一些行为,包括鼠标点击、释放,鼠标悬停、离开,键盘按键等,通过监听这些事件可以实现很多网页的交互效果。 DOM事件的三个阶段 在浏览器页面中,DOM事件的整个过程可以被…

    JavaScript 2023年6月10日
    00
  • 原生js轮播特效

    原生JS轮播特效是一种常见的网页设计效果,下面是一些实现的步骤和示例: 步骤 创建HTML布局 要实现轮播特效,需要一个包含轮播图片的容器和一组控制轮播的选择器。这个容器可以是一个div或ul元素。 设置CSS样式 设置容器和选择器的CSS样式,包括宽度,高度,颜色,字体大小和间距等。 编写JavaScript代码 3.1 获取容器和选择器元素的引用 3.2…

    JavaScript 2023年6月11日
    00
  • 详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)

    生成一个倒数7天的数组,可以通过JavaScript中的Date对象来实现。 了解Date对象以及getDate、setDate方法 Date对象是JavaScript中处理日期和时间的核心对象。我们可以利用它来获取当前日期和时间,以及进行各种日期和时间的计算和操作。 Date对象提供了许多方法来获取和设置日期的各个部分。其中,getDate和setDate…

    JavaScript 2023年6月10日
    00
  • Android React-Native通信数据模型分析

    Android React-Native通信数据模型分析 什么是React-Native? React-Native是一种使用JavaScript编写的移动应用程序开发框架。它使用React框架来构建用户界面,并使用原生组件来实现不同平台上的应用程序行为。 React-Native将JavaScript代码编译成原生代码,这使得React-Native应用程…

    JavaScript 2023年5月28日
    00
  • JavaScript获取中英文混合字符串长度的方法示例

    哦,好的!那我来详细讲解一下“JavaScript获取中英文混合字符串长度的方法示例”的完整攻略。 什么是中英文混合字符串? 所谓中英文混合字符串,是指字符串中既包含中文字符,也包含英文字符。 获取中英文混合字符串长度的方法 JavaScript 中提供了多种方法来获取字符串长度,但对于中英文混合字符串,有些方法并不能完全正确地计算其长度。下面介绍两种可行的…

    JavaScript 2023年5月28日
    00
  • Java技术长久占居主要地位的12个原因

    这里我将采用Markdown语法来详细讲解“Java技术长久占居主要地位的12个原因”的完整攻略,具体如下: Java技术长久占居主要地位的12个原因 1. 面向对象编程 Java语言是一门完全基于面向对象编程的语言,因此在处理复杂业务场景时非常得心应手。Java语言的面向对象编程思想使得程序的代码结构、代码维护、开发效率更高,而且在软件开发方面相比其他语言…

    JavaScript 2023年5月28日
    00
  • JavaScript利用append添加元素报错的解决方法

    下面是“JavaScript利用append添加元素报错的解决方法”的详细攻略: 问题描述 在使用JavaScript向HTML文档中添加元素时,我们可以使用append方法。但在使用这个方法时,有时会出现以下错误: Uncaught TypeError: Failed to execute ‘appendChild’ on ‘Node’: paramete…

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