JavaScript中如何对多维数组(矩阵)去重的实现

JavaScript中对多维数组(矩阵)去重的实现,可以使用Set数据结构和Array.prototype.map方法相结合实现。相比遍历数组并用indexOf方法实现数组去重,Set结构和map方法的效率更高。下面是实现的步骤:

  1. 将多维数组转换成一维数组
let arr = [ [1, 2, 3], [2, 3, 4], [3, 4, 5] ];
let flatArr = [].concat(...arr); // [1, 2, 3, 2, 3, 4, 3, 4, 5]
  1. 使用Set对一维数组去重
let uniqueSet = new Set(flatArr); // Set {1, 2, 3, 4, 5}
  1. 使用Array.from方法将Set转换为数组
let uniqueArr = Array.from(uniqueSet); // [1, 2, 3, 4, 5]
  1. 重新组成多维数组
let matrixArr = [ [1, 2, 3], [2, 3, 4], [3, 4, 5] ];
let uniqueMatrixArr = [];
uniqueArr.map(item => {
  let uniqueRow = matrixArr.find(row => row.includes(item));
  if (uniqueRow) {
    uniqueMatrixArr.push(uniqueRow);
  }
})

在这个示例中,首先将多维数组转换成一维数组,使用Set对数组去重,然后再将Set转换成数组,这样我们就得到了去重后的值,接下来,我们使用Array.prototype.map()方法来构建新的多维数组。假设我们要构建一个包含所有独立值的多维数组,我们可以遍历独特的值数组,并在原来的多维数组中查找包含该值的行。当找到一个行时,我们将其推送到新的多维数组中。

下面是另一个示例,假设我们要去掉特定索引的重复值:

let arr = [ 
    [1, 2, 3], 
    [2, 3, 4], 
    [3, 4, 5], 
    [6, 7, 3], 
    [8, 9, 4] 
];
let uniqueArr = [];
arr.forEach(row => {
  let newRow = [];
  for (let i = 0; i < row.length; i++) {
    if (!newRow.includes(row[i]) && !uniqueArr.some(item => item[i] === row[i])) {
      newRow.push(row[i]);
    }
  }
  uniqueArr.push(newRow);
})

在这个示例中,我们使用arr.forEach()方法遍历每一行,并对每一行使用一个循环来查找重复的值。如果当前值不在当前行的新行中,也没有在独特的行中出现过,我们就将其推送到新行的尾部。最后,我们将新行推送到最终的唯一结果数组。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中如何对多维数组(矩阵)去重的实现 - Python技术站

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

相关文章

  • 普通js文件里面如何访问vue实例this指针

    在普通js文件中,如果需要访问Vue实例的数据或者方法,需要通过Vue实例的引用来获取this指针。 一、通过Vue.createApp创建Vue实例 如果我们通过Vue.createApp创建Vue实例,我们可以使用provide和inject来将Vue实例注入到普通js文件中,使其能够访问Vue实例。具体步骤如下: 在Vue.createApp中使用pr…

    JavaScript 2023年6月11日
    00
  • JavaScript入门教程(5) js Screen屏幕对象

    JavaScript入门教程(5) js Screen屏幕对象 简介 Screen 对象代表了当前浏览器所在电脑的屏幕信息。通过 Screen 对象,我们可以获取到客户端屏幕的宽、高、物理宽、高、可用宽、高等相关信息,可以方便设计响应式页面。 属性 Screen.width 获取当前屏幕的宽度。 Screen.height 获取当前屏幕的高度。 Screen…

    JavaScript 2023年5月27日
    00
  • 一种新的javascript对象创建方式Object.create()

    一种新的javascript对象创建方式Object.create() Object.create()是一个比较新的JavaScript方法,它可以创建一个新对象,并将原型设置为一个已有的对象。这意味着你可以使用一个现有对象作为新对象的原型,在新对象里共享原型的属性和方法。使用Object.create()的主要优点包括: 简化代码 更简单的原型继承 字面量…

    JavaScript 2023年5月27日
    00
  • Bootstrap Fileinput文件上传组件用法详解

    Bootstrap Fileinput文件上传组件用法详解 Bootstrap Fileinput是一款基于Bootstrap的文件上传组件,可以方便地进行文件上传并对上传的文件进行一些处理。 安装 下载源码 可以从 Bootstrap Fileinput 的官方 Github 页面下载源码:https://github.com/kartik-v/boots…

    JavaScript 2023年5月28日
    00
  • Django操作cookie的实现

    下面是关于Django操作cookie的实现的完整攻略。 什么是Cookie Cookie是一段很小的文本信息,由网站发送到访问者的浏览器中,并在之后的访问中由浏览器向服务器发送。Cookie通常用于存储用户的偏好设置、登录状态、购物车信息等。 Django中创建和读取Cookie Django使用HttpRequest对象来操作Cookie。其中,创建Co…

    JavaScript 2023年6月11日
    00
  • javaScript 判断字符串是否为数字的简单方法

    判断一个字符串是否为数字,可以使用多种方法,下面是两种常用的方法。 方法一:使用正则表达式 使用正则表达式可以判断一个字符串是否为数字,通过使用 test() 函数匹配字符串,检测该字符串是否符合数字格式。 if (/^[0-9]+$/.test(str)) { console.log(‘该字符串为数字’); } else { console.log(‘该字…

    JavaScript 2023年5月28日
    00
  • Javascrip基础之for循环和数组

    Javascript基础之for循环和数组 在Javascript中,for循环和数组是非常重要的基础知识点,它们可以帮助我们完成很多重要的任务,如循环迭代,数据处理等。本文将详细讲解Javascript中的for循环和数组的用法,帮助大家掌握这些重要的知识点。 for循环 for循环是一种常见的循环方式,可以重复执行指定的代码块。它的基本语法如下: for…

    JavaScript 2023年5月27日
    00
  • Javascript 高阶函数使用介绍

    Javascript高阶函数使用介绍 在Javascript中,高阶函数是指能够接受一个或多个函数作为参数,或者将函数作为返回值的函数。通过使用高阶函数,我们可以更好地组织我们的代码,使其更加灵活和可复用。下面将详细介绍Javascript高阶函数的几种常见用法。 将函数作为参数传入另一个函数 使用函数作为另一个函数的参数是高阶函数中最基本的用法之一。例如我…

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