我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript怎么找出数组中的重复或非重复元素

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript怎么找出数组中的重复或非重复元素

本文小编为大家详细介绍“JavaScript怎么找出数组中的重复或非重复元素”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript怎么找出数组中的重复或非重复元素”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、出数组中的重复元素或非重复元素

双重循环 + slice,找出重复的元素。虽然只要求找出重复元素,但应该注意要顺便去重,否则外循环还是会对重复元素进行一遍检查;用 flag 记录重复次数,只在第一次重复的时候将元素放入新数组

function search(arr){    let res = []    let flag = 0    for(let i = 0;i < arr.length;i++){        for(let j = i+1;j<arr.length;j++){            if(arr[i] === arr[j]){                flag++                if(flag == 1) res.push(arr[i])                arr.splice(j,1)            }            }        flag = 0    }    return res}

map + filter,记录每个元素出现的次数。有了重复次数,就可以筛选出重复元素、重复次数最多元素或者非重复元素:

function search(arr){    const map = new Map()    for(item of arr){        if(!map.has(item)){            map.set(item,1)        } else {            map.set(item,map.get(item)+1)        }    }    // 找出重复元素,即出现次数大于1    return [...map.entries()].filter(item => item[1] > 1).map(item => item[0])    // 找出非重复元素,即出现次数等于1    return [...map.entries()].filter(item => item[1] == 1).map(item => item[0])    // 找出重复次数最多的元素    return [...map.entries()]        .filter(item => item[1] == Math.max(...map.values()))        .map(item => item[0])}

二、数组扁平化 / 数组降维

二维数组,以[[],[{a:1}],[],[3,4],5] 为例,降维后得到[{a:1},3,4,5]

二维数组:双重循环

需要检查是否每个元素都是数组

function flatten(arr){    const res = []    for(let i = 0;i < arr.length; i++){        if(Array.isArray(arr[i])){            for(let j = 0;j < arr[i].length;j++){                res.push(arr[i][j])            }                    } else {            res.push(arr[i])        }          }    return res}

二维数组:循环 + concat

concat 本身就可以给数组降维一次

function reduceDiemension(arr){    const res = []    for(let i = 0;i < arr.length;i++){        res = res.concat(arr[i])    }    return res}

二维数组:reduce + concat

上面的过程本身是一种归并,所以考虑使用 reduce

function flatten(arr){    return arr.reduce((acc,cur) => acc.concat(cur),[])}

二维数组:展开 / apply + concat

通过展开原数组或者将其作为 apply 的第二个参数,把数组转化为一个参数列表

function flatten(arr){    // return [].concat([],arr)    return [].concat(...arr)}

多维数组,以下面的数组为例:

const arr = [
    1,
    [
        2,[3],
        [4,5,6],
        [7,8,9],
        10,11
    ],
    12,
    13,
    [15,16,17]
]

降维后得到 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17]

多维数组:toString + split

数组降维可以看作是把所有的括弧都去掉,而数组的 toString 方法刚好可以做这个事,之后再调用字符串的 split 把字符串转换回数组即可。但这个方法很局限,要求数组元素的数据类型都相同。

function flattern_numberArray(arr){    return arr.toString().split(",").map(x => Number)}

多维数组:forEach + 递归

function flatten(arr){    const res = []    arr.forEach(item => {        if(Array.isArray(item)){            flatten(item)        } else {            res.push(item)        }    })    return res}

多维数组:reduce + 递归

同理,上面的过程是一种归并,可以使用 reduce 完成。需要注意的是,reduce 的回调函数必须返回一个数组,所以不要再用 push

function flatten(arr){    return arr.reduce((acc,cur) => {        if(Array.isArray(cur)){            return [...acc , ...flatten(cur)]            } else {            return [...acc,cur]        }    },[])}

多维数组:while + some

只要数组中还有数组,就使用 concat 给这个数组降维。这个方法可以不使用递归

function flatten(arr){        while(arr.some(item => Array.isArray(item))){        arr = [].concat(...arr)    }    return arr}

不确定维数的数组: flat

数组降维,直接用之前讲过的 flat 是最简单的。默认传参 1,表示降维一次;可以传参 Infinity,实现完全降维,最终得到一个一维数组。

读到这里,这篇“JavaScript怎么找出数组中的重复或非重复元素”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScript怎么找出数组中的重复或非重复元素

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaScript怎么找出数组中的重复或非重复元素

本文小编为大家详细介绍“JavaScript怎么找出数组中的重复或非重复元素”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript怎么找出数组中的重复或非重复元素”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习
2023-06-29

python列表怎么找出重复元素

可以使用python中的集合(set)来找出列表中的重复元素。集合是一种无序且不重复的数据结构,所以将列表转换为集合后,再将集合转换回列表,就可以删除重复元素。以下是一个示例代码:```pythondef find_duplicates(l
2023-09-29

php如何查找数组中不重复的元素

本篇内容主要讲解“php如何查找数组中不重复的元素”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何查找数组中不重复的元素”吧!方法:1、用array_count_values()统计元素
2023-06-30

python怎么删除数组中重复的元素

可以通过使用set()函数或者使用列表推导式来删除数组中的重复元素。方法一:使用set()函数```pythona = [1, 2, 3, 3, 4, 5, 5]b = list(set(a))print(b)```输出:```[1, 2,
2023-08-19

PHP数组中的重复元素怎么删除

这篇文章主要介绍“PHP数组中的重复元素怎么删除”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP数组中的重复元素怎么删除”文章能帮助大家解决问题。一、使用array_unique()函数去重PH
2023-07-06

Java中怎么删除数组中的重复元素

这篇文章将为大家详细讲解有关Java中怎么删除数组中的重复元素,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。问题:比如我有一个数组(元素个数为0哈),希望添加进去元素不能重复。拿到这样一个问
2023-06-17

PHP 数组分组函数在查找重复元素中的作用

php 的 array_group() 函数可用于按指定键对数组进行分组,以查找重复元素。该函数通过以下步骤工作:使用 key_callback 指定分组键。可选地使用 value_callback 确定分组值。对分组元素进行计数并识别重复
PHP 数组分组函数在查找重复元素中的作用
2024-05-05

如何去重多维 PHP 数组中的重复元素?

要去重多维 php 数组中的重复元素,可以使用 array_unique() 函数或者自定义递归函数。array_unique() 会将内部数组作为一个整体处理,而自定义递归函数会遍历数组并逐个元素地检查它们。在实战案例中,可以利用这些方法
如何去重多维 PHP 数组中的重复元素?
2024-04-28

php中两个数组怎么去掉重复的元素

php去掉两个数组中重复元素的方法:1、创建一个PHP示例文件;2、使用foreach语句以及unset函数删除两个数组中相同的元素即可。
2015-02-20

c语言怎么删除数组中重复元素

删除数组中重复元素的方法可以分为两种:使用额外的空间:创建一个新数组,遍历原数组,将不重复的元素存入新数组。将新数组复制回原数组。int removeDuplicates(int arr[], int n) {if (n == 0 ||
c语言怎么删除数组中重复元素
2024-03-01

c语言怎么找出数组中重复的数字

可以使用两种方法来找出数组中重复的数字。方法一:使用“哈希表”创建一个哈希表,用于记录每个数字出现的次数。遍历数组,将数组中的每个数字作为键,放入哈希表中,并将对应的值加1。遍历哈希表,找出值大于1的键,即为重复的数字。示例代码如下:
2023-10-26

java怎么判断数组元素是否重复

Java中判断数组元素是否重复可以使用以下方法:1. 使用两层循环遍历数组,比较每对元素是否相同。如果找到相同的元素,则数组中存在重复元素。```javapublic static boolean isDuplicate(int[] arr
2023-09-22

php数组怎么去除重复和空元素

实现步骤:1、使用array_unique()函数去除原数组中的重复元素,语法“array_unique(原数组)”,会返回一个去重数组;2、使用array_filter()函数过滤去重数组,删除去重数组中的空元素即可,语法“array_filter(去重数组)”。本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑在php中,可以array_unique()函数和array_f
2022-06-28

怎么实现PHP删除数组重复元素

这篇文章主要为大家展示了“怎么实现PHP删除数组重复元素”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么实现PHP删除数组重复元素”这篇文章吧。我们在实际操作PHP代码的过程中,经常会遇到数组
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录