美文网首页让前端飞Web前端之路
js数组方法——找出两数组中不相同的元素的集合

js数组方法——找出两数组中不相同的元素的集合

作者: 裸泳的小熊 | 来源:发表于2020-07-09 09:32 被阅读0次

1. 找出两数组中不相同的元素的集合

平时需求中经常遇到,找出两数组中不相同的部分。有时候会要找出被删除的元素。

//比如
let arr1 = [1,2,3,4];
let arr2 = [2,3,4];
//找出被删的元素
function findItem(curArr,oldArr){
    return curArr.concat(oldArr).filter(function(v, i, arr) {
        return arr.indexOf(v) === arr.lastIndexOf(v);
    });
}
console.log(findItem(arr1,arr2))
//打印   [1]

indexOf是找出数组中元素第一次出现的位置。
lastIndexOf是找出数组中元素最后出现的位置。
假如两个数组合并后,重复的元素出现两次,indexOf和lastIndexOf的值是不一样的,反之,如果元素不是重复元素,那么,indexof和lastIndexOf值是一样的。

2.reduce运用场景

reduce()方法为归并类方法,最常见的应用场景就是,计算数组中每一项的总和。

reduce()方法会遍历数组的每一项,它接收两个参数:
第一个参数是:每次遍历都会调用的函数,而这个函数又接收四个参数,分别为:前一个值、当前项、项目的索引和数组对象,
而这个函数的返回值,会传给下一次遍历时,执行的这个方法的第一个参数。

第二个参数是:归并基础的初始值。

 arr.reduce((prev,cur)=>{
      return prev+cur
 })

上面这段代码,是用来计算数组总和的,reduce方法中,只传了第一个参数,也就是只传了一个函数,但第二个参数、初始值并没有传,当第二个值没有传的时候,第一次循环,prev的值,默认为数组的第一项,而cur的值为数组的第二项,也就是第一次循环,会return 1+2 ,这个时候,第一次循环返回的结果会传给下一次循环中方法的第一个参数,也就是说、第二次循环方法中prev的值,是第一次循环方法返回的结果。

arr.reduce((prev,cur)=>{
    return prev+cur
},10)

我们传入一下第二个参数,第一次循环,prev的值为reduce的第二个参数,也就是“归并基础的初始值”,而cur的值为数组的第一项,第一次循环会返回10+1 。

总结:
1.当reduce()方法的第二个值为空时,第一次循环方法中的第一个参数(prev)为数组的第一项值,第二个参数(cur)为数组的第二项值,反之,第一次循环方法中的第一个参数(prev)为reduce的第二个参数值,第二个参数(cur)为数组的第一项值。

2.reduce方法的第一个参数,就是每次遍历都会执行的匿名函数,当前函数的返回值会传给下一次执行函数的第一个值。也就是prev

相关文章

  • js数组方法——找出两数组中不相同的元素的集合

    1. 找出两数组中不相同的元素的集合 平时需求中经常遇到,找出两数组中不相同的部分。有时候会要找出被删除的元素。 ...

  • 9. 进阶算法之"搜索排序"

    简介 排序: 把某个乱序的数组变成升序或者降序的数组 搜索:找出数组中某个元素的下标 JS中的排序和搜索 JS中的...

  • JavaScript 精粹 基础 进阶(5)数组

    数组是值的有序集合。每个值叫做元素,每个元素在数组中都有数字位置编号,也就是索引。JS中的数组是弱类型的,数组中可...

  • map

    js中的map()方法 map定义和方法 map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理的后...

  • 看犀牛书的笔记——数组

    在js中数组就是值的有序集合。每个值叫做一个元素,元素在数组中的位置叫做索引。 JavaScrit数组是无类型的:...

  • JavaScript 数组

    数组的创建 数组是值的有序集合。每个值叫做元素,每个元素在数组中都有数字位置编号,也就是索引。JS中的数组是弱类型...

  • js 判断数组中是否包含某元素的方法

    简述 js判断数组中是否包含某元素的方法 1.array.indexOf(item,start):元素在数组中的位...

  • 数组的方法(一)

    数组:数组是有序的集合,里面存在的每一项称为数组中的元素 检测数组的方法 Array.isArray() inst...

  • 12.7DOM&BOM

    JS=DOM+BOM+基本语法 排序 children 获取的是元素集合;是类数组,但是没有数组的一些方法和属性,...

  • Swift--原生集合类型

    数组 字典 Set集合 数组 数组:是一串有序的由相同类型元素构成的集合。数组中的集合元素是有序的,可以重复出现。...

网友评论

    本文标题:js数组方法——找出两数组中不相同的元素的集合

    本文链接:https://www.haomeiwen.com/subject/zbfjcktx.html