js数组去重与去扁平化详解

本文主要和大家分享js数组去重与去扁平化详解希望能帮助到大家。

数组去重

var arr = [1, 43, 4, 3, 2, 4, 3];  // 去重后    arr = [1, 43, 4, 3, 2]

传统方法,for循环实现

function dedupe(arr) {    var rets = [];    for (var i = 0; i 

ES6方法实现

// es6提供的新的数据结构Set,类似数组,但是成员的值都是唯一的,没有重复的值。function dedupe(arr) {    var newSet = new Set(arr);  // arr变成了set的数据结构,并去除了其中重复的元素    return Array.from(newSet);  // Array.from方法将set数据结构转为数组数据结构}

登录后复制

数组去扁平化
数组的扁平化,就是将一个嵌套多层的数组array(嵌套可以是任何层数)转换为只有一层的数组

var arr = [1, 2, 3, [4, 3, [2, 7], 2], 5, [5, 9, 10], 7];
 // 去扁平化后
 arr = [1, 2, 3, 4, 3, 2, 7, 2, 5, 5, 9, 10, 7];

(1)循环递归实现

// for循环,如果子元素还是数组,则递归调用该方法function flatten(arr) {    var rets = [];    for(var i = 0; i  {        if (Array.isArray(item)) {            rets = rets.concat(flatten(item));        } else {            rets.push(item);        }    });    return rets;}

登录后复制

(2)使用reduce简化代码

function flatten(arr) {    arr.reduce(function(pre, item){        return pre.concat(Array.isArray(item) ? flatten(item) : item);    }, [])}

登录后复制

(3)如果数组元素都为数字,则可以使用toString方法

function flatten(arr) {    var newArr = arr.toString().split(',');    return newArr.map(function(item){        return +item;        // 将字符串转为数字    });}

登录后复制

相关推荐:

js数组去重和排序详解、

JavaScript和Python 的数组去重解析

实例详解javascript数组去重的几种思路

以上就是js数组去重与去扁平化详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2784754.html

(0)
上一篇 2025年3月8日 17:15:06
下一篇 2025年2月20日 04:18:22

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Node.js的PEGjs该如何使用

    这次给大家带来node.js的pegjs该如何使用,在node.js中使用pegjs的注意事项有哪些,下面就是实战案例,一起来看一下。 (1)安装pegjs npm install pegjs 登录后复制 (2)grammer.pegjs …

    编程技术 2025年3月8日
    200
  • Vue.JS的自定义指令应该如何使用

    这次给大家带来vue.js的自定义指令应该如何使用,使用vue.js的自定义指令的注意事项有哪些,下面就是实战案例,一起来看一下。 Vue.js 允许你注册自定义指令,实质上是让你教 Vue 一些新技巧:怎样将数据的变化映射到 DOM 的行…

    编程技术 2025年3月8日
    200
  • Immutable.js详解

    这次给大家带来immutable.js详解,使用immutable.js的注意事项有哪些,下面就是实战案例,一起来看一下。 Immutable.js在react + router + redux项目中的应用 先介绍一下Immutable: …

    编程技术 2025年3月8日
    200
  • AngularJS之HelloWorld实例

    本文主要和大家分享angularjs之helloworld实例,希望能帮助到大家。 1、.angular-cli.json {  “$schema”: “./node_modules/@angular/cli/lib/config/sche…

    编程技术 2025年3月8日
    200
  • 前端关于Node.js的面试题

    这次给大家带来前端关于node.js的面试题,面试前端关于node.js岗位有哪些需要注意的,下面就是实战题目,一起来看一下。 【相关推荐:前端面试题(2020)】 如果你希望找一份有关Node.js的工作,但又不知道从哪里入手评测自己对N…

    编程技术 2025年3月8日
    200
  • js的Prototype属性用法详解

    每一个构造函数都有一个属性叫做原型(prototype,下面都不再翻译,使用其原文)。这个属性非常有用:为一个特定类声明通用的变量或者函数。 prototype的定义你不需要显式地声明一个prototype属性,因为在每一个构造函数中都有它…

    2025年3月8日
    200
  • 前端js打印(导出)excel表格的方法实例

    本文主要和大家分享前端js打印(导出)excel表格的方法实例,希望能帮助到大家。 产品原型: 图片.png 功能需求:点击导出考勤表格按钮,会自动下载成Excel格式 立即学习“前端免费学习笔记(深入)”; 图片.png 图片.png j…

    2025年3月8日
    200
  • AngularJS使用webApi导出数据

    本文主要和大家分享angularjs使用webapi导出数据代码实例,希望本文的代码能帮助到大家。  /////导出功能    self.importExcel = function () {        var dataUrl = “h…

    编程技术 2025年3月8日
    200
  • vue.js、element-ui、vuex环境搭建实例分享

    本文主要和大家分享vue.js、element-ui、vuex环境搭建实例,本文主要以图文实例和代码分享,希望能帮助到大家。 一、初始化项目 vue init webpack  登录后复制 二、初始化依赖包 npm install 登录后复…

    2025年3月8日 编程技术
    200
  • 六种JS数组去重的方法分享

    方法一: 双层循环,外层循环元素,内层循环时比较值 如果有相同的值则跳过,不相同则push进数组 本文主要和大家分享六种JS数组去重的方法,希望能帮助到大家。 Array.prototype.distinct =function(){ va…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论