JS 数组篇 数组求和与数组去重

news/2024/7/10 23:46:03 标签: js, 前端, es6

数组求和

  1. for循环求和

    js"> let arr = [1,2,3,4,5]
     function sum(arr){
       let sum = 0;
       for(let index = 0;index<arr.length;index++){
         sum += arr[index]
       }
       return sum 
     }
     console.log(sum(arr))
    
  2. map-reduce求和

    js">let arr = [1,2,3,4,5]
    function sumMap(arr){
      let sum = 0
      arr.map((value,index,arr)=>{
        sum += value
      })
      return sum
    }
    function sumReduce(arr){
     return arr.reduce((prev,cur)=>{ return prev+cur})
    }
    console.log(sumMap(arr))
    console.log(sumReduce(arr))
    
  3. forEach循环

    js">let arr = [1,2,3,4,5]
    function sumForeach(arr){
       let sum = 0
       arr.forEach(val => {
         sum += val
       });
       return sum
     }
     console.log(sumForeach(arr))
    
  4. 递归

    let arr = [1,2,3,4,5]
    function recursion(arr){
    	 let len = arr.length
    	 if(len == 0){
    	   return 0
    	 }
    	 if (len == 1) {
    	   return arr[0]
    	 }
    	 return arr[0] + recursion(arr.slice(1))
    }
    console.log(recursion(arr))
    

数组去重

let arr = [1, 2, 2, null, undefined, [], {}, {}, 'str', 'str', { a: 1 }, {a:1}]
  1. 解构+Set

    js">let arr = [1, 2, 2, null, undefined, [], {}, {}, 'str', 'str', { a: 1 },{a:1}]
    function unique(arr){
    	return [...new Set(arr)]
    }
    console.log(unique(arr))
    //[1,2,null,undefined,[], {},{}, 'str',{ a: 1 }, { a: 1 }]
    
  2. Array.form + Set

    js">function unique(arr){
    	return Array.from(new Set(arr))
    }
    console.log(unique(arr))
    //[1,2,null,undefined,[], {},{}, 'str',{ a: 1 }, { a: 1 }]
    
  3. Array.map + indexOf

    js">function unique (arr) {
      let tempArr = []
      arr.map((value) => {
        if (tempArr.indexOf(value) === -1){
          tempArr.push(value)
        }
      })
      return tempArr
    }
    console.log(unique(arr));
    //[1,2,null,undefined,[], {},{}, 'str',{ a: 1 }, { a: 1 }]
    
  4. Array.forEach + includes

    js">function unique (arr) {
      let tempArr = []
      arr.forEach(val => {
        if (!tempArr.includes(val)) {
          tempArr.push(val)
        }
      });
      return tempArr
    }
    console.log(unique(arr));
    //[1,2,null,undefined,[], {},{}, 'str',{ a: 1 }, { a: 1 }]
    
  5. Array.forEach + Map

    js">function unique (arr) {
      let map = new Map()
      let array = new Array()
      arr.forEach(val =>{
          if(map.has(val)){
              map.set(val,true)
          }else{
              map.set(val,false)
              array.push(val)
          }
      })
      return array;
    }
    console.log(unique(arr));
    //[1,2,null,undefined,[], {},{}, 'str',{ a: 1 }, { a: 1 }]
    
  6. filter + indexOf

    js">function unique(arr){
    	return arr.filter((val,index) =>{
    		return arr.indexOf(val,0)=== index
    	})
    }
    console.log(unique(arr));
    //[1,2,null,undefined,[], {},{}, 'str',{ a: 1 }, { a: 1 }]
    
  7. 对象属性

    function unique (arr) {
      let tempArr = []
      let obj = {}
      arr.forEach(val => {
        if (!obj[val]) {
          tempArr.push(val)
          obj[val] =val
        }
      })
      return tempArr
    }
    console.log(unique(arr));
    //[ 1, 2, null, undefined, [], {}, 'str' ]
    

总结:

	1~6种方式:均无法判断出Object类型
	第7种,会将非空Object忽略

http://www.niftyadmin.cn/n/1852519.html

相关文章

[BZOJ 2820] YY的GCD

题意 求下式的值:\[ \sum_{i1}^n\sum_{j1}^m \mathbb{P}(\gcd(i,j)) \] 其中 \(\mathbb{P}(x)\) 当 \(x\) 为质数时为 \(1\), 否则为 \(0\). 题解 反演真棒\[ \begin{align} f(x)& \sum_i^N\sum_j^M[\gcd(i,j)x] \\ F(x)& \sum_{x|m}f(m) \\ &\left \lfloor \frac …

JS 数组篇 多维数组扁平化

概念&#xff1a;数组扁平化是指将一个多维数组变为一维数组 思想&#xff1a;遍历数组每一项&#xff0c;如果该项为数组&#xff0c; 方法总结 let arr [1,2,3,[a,b],[[4],[[[5,6],c]]]]Array.prototype.flat const arr1 [0, 1, 2, [3, 4]]; console.log(arr1.flat()); /…

Oracle 10G Install on SuSE10

Oracle 10G Install on SuSE10 环境 anticell-suse:~ # uname -a Linux anticell-suse 2.6.16.46-0.12-bigsmp #1 SMP Thu May 17 14:00:09 UTC 2007 i686 i686 i386 GNU/Linux anticell-suse:~ # free -m total used free shared buffers cached …

视频只能播放一两帧,PDF文件60k以上加载失败的问题,静态访问也一样

linux环境 排查了各种端口过滤器&#xff0c;局域网访问等等都有这种问题&#xff0c;而8080端口是正常的&#xff0c;最后改了nginx的端口监听&#xff0c;才发现是 nginx的缓存出现问题 原由是客户改了用户组从而导致nginx没有缓存权限&#xff0c;nginx读取不了缓存从而造成…

18-Eclipse输入不了中文问题

之前一直被这个问题纠结&#xff0c;不知按错了哪个键&#xff0c;导致编码书写注释时中文输入失败。怎么切换输入法都无效。 而此时其他应用输入中文是没问题的&#xff0c;于是断定是eclipse快捷键导致。 CtrlShiftE eclipse默认切换编辑器&#xff0c;此快捷键导致。重新按此…

Intellj IDEA光标问题

Intellj IDEA光标为insert状态&#xff0c;无法删除内容以前用得是社区版的IDEA&#xff0c;今天装了14版本的&#xff0c;结果导入项目后&#xff0c;发现打开java文件的光标是win系统下按了insert键后的那种宽的光标&#xff0c;并且还无法删除内容&#xff0c;且按删除(dele…

Oracle 删除主键列

1、先去掉主键约束查出主键约束的名字SELECT * from user_cons_columns where table_nameAC_LOGININFO;取消主键约束alter table AC_LOGININFO drop constraint AC_LOGININFO_PK;2、删除列ALTER TABLE schema.table_name DROP COLUMN column_name [CASCADE CONSTRAINT];[…

JS 循环遍历总结

for 介绍 for 语句用于创建一个循环&#xff0c;它包含了三个可选的表达式&#xff0c;这三个表达式被包围在圆括号之中&#xff0c; 使用分号分隔&#xff0c;后跟一个用于在循环中执行的语句&#xff08;通常是一个块语句&#xff09;。示例 var i 0; for (; i < 9; i…