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

yizhihongxing

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日

相关文章

  • 一文总结JavaScript中Promise遇到的问题

    一文总结JavaScript中Promise遇到的问题 Promise是什么? Promise是一种规范,主要解决了JavaScript中回调地狱的问题,可以让我们更加方便地进行异步编程。Promise主要有以下三种状态: Pending(进行中) Fulfilled(已完成) Rejected(已拒绝) Promise的基本用法 function fetc…

    JavaScript 2023年5月28日
    00
  • javascript中replace( )方法的使用

    下面是关于 JavaScript 中 replace() 方法的完整攻略。 replace() 方法简介 replace() 方法是 JavaScript 中一个非常常用的字符串方法,它用于查找和替换字符串中的某些字符或者子字符串。replace() 方法的语法如下: str.replace(regexp|substr, newSubStr|function…

    JavaScript 2023年5月27日
    00
  • javascript实现跟随鼠标移动的图片

    以下是Javascript实现跟随鼠标移动的图片的完整攻略: 第一步:HTML 模板 首先,我们需要创建一个包含图片的 HTML 模板。可以按照以下示例来创建一个基本 HTML 模板: <!DOCTYPE html> <html> <head> <title>跟随鼠标移动的图片</title> &l…

    JavaScript 2023年6月11日
    00
  • js核心基础之构造函数constructor用法实例分析

    首先,构造函数(Constructor)是JavaScript中的一个特殊函数,可以用来创建可重复使用的对象。构造函数可以用于创建特定类型的对象,比如创建一个人(Person)类型的对象。接下来我会详细讲解构造函数constructor用法实例分析。 构造函数的定义和基本使用方法 构造函数是一个用于创建对象的特殊函数,它可以使用 new 关键字来创建对象,同…

    JavaScript 2023年5月28日
    00
  • JavaScript中的数学运算介绍

    下面是“JavaScript中的数学运算介绍”的完整攻略: JavaScript中的数学运算介绍 在 JavaScript 中,我们可以进行任意的数学运算,例如加法、减法、乘法、除法等等。下面就来一一介绍这些运算。 加法 在 JavaScript 中,加法运算使用加号(+)进行表示。 let a = 3; let b = 4; let c = a + b; …

    JavaScript 2023年5月18日
    00
  • JS正则表达式验证数字代码

    下面我将详细讲解 JS 正则表达式验证数字代码的完整攻略。 步骤 1. 构建正则表达式 首先需要构建一个用于验证数字的正则表达式。一般来说,数字可以包含整数和小数,还可能有正负号。 验证整数和小数的正则表达式如下: /^-?\d+(\.\d+)?$/ 其中: ^ 表示字符串开始 -? 表示可以有一个可选的负号 \d+ 表示至少一个数字 (\.\d+)? 表示…

    JavaScript 2023年6月10日
    00
  • 分析javascript原型及原型链

    分析 JavaScript 原型及原型链可分为以下几个步骤: 1. 什么是原型 在JavaScript中,每个对象都有一个原型对象(prototype),当你访问一个对象的属性时,如果这个对象本身不存在这个属性,那么 JavaScript 就会从原型对象中找这个属性,如果原型对象中也不存在这个属性,那么就会从原型对象的原型对象中继续寻找,直到找到为止,这就是…

    JavaScript 2023年6月10日
    00
  • 利用javaScript处理常用事件详解

    让我来为你详细讲解如何利用JavaScript处理常用事件的攻略。 1. 理解JavaScript事件机制 在使用JavaScript处理事件之前,我们需要先了解JavaScript事件机制。JavaScript事件机制是指通过用户交互或者代码触发某个事件,然后执行对应的事件处理程序的过程。常见的事件包括鼠标事件、键盘事件、表单事件、窗口事件等等。 2. 事…

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