精华内容
下载资源
问答
  • JS(ES6去除数组中的重复记录
    千次阅读
    2021-01-14 15:13:58

    1.双层循环,外层循环元素,内层循环时比较值;如果有相同的值则跳过,不相同则push进数组// formatConcatArr(array)==[ 1, 23, 2, 3 ]

    formatConcatArr(array)=={ {formatConcatArr([1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 2, 2, 1, 23, 1, 23, 2, 3, 2, 3, 2, 3])}}formatConcatArr (array) {

    let arr = array

    let result = []

    let i

    let j

    let len = arr.length

    for (i = 0; i < len; i++) {

    for (j = i + 1; j < len; j++) {

    if (arr[i] === arr[j]) {

    j = ++i

    }

    }

    result.push(arr[i])

    }

    return result

    }

    2.利用splice直接在原数组进行操作

    双层循环,外层循环元素,内层循环时比较值;值相同时,则删去这个值

    注意点:删除元素之后,需要将数组的长度也减1.(优点:简单易懂;缺点:占用内存高,速度慢)

    // formatConcatAr

    更多相关内容
  • 主要给大家介绍了Array对象去除重复项的相关资料,文中通过示例代码详细介绍了在ES5和ES6中Array对象去除重复项的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
  • 比如下面的表格就一个月累计数据,那么,如果想知道整个表格中去除重复的人名后,一共有多少个销售人员,我们可以通过Sum结合Countif的数组方法求得该结果。函数公式在E2单元格输入公式【{=SUM(1/COUNTIF($B$2:$B$13...

    f89fee56348a7e8d65068d7682499337.png

    工作中有时经常遇到各日、各月、各季、或各年的数据累计到一张表格的中的情况。比如下面的表格就一个月累计数据,那么,如果想知道整个表格中去除重复的人名后,一共有多少个销售人员,我们可以通过Sum结合Countif的数组方法求得该结果。

    6838a77355263919fd332b31c59d33ad.png

    函数公式

    在E2单元格输入公式【{=SUM(1/COUNTIF($B$2:$B$13,$B$2:$B$13))}】,回车后得到计算结果。

    函数解读

    1.公式中的“COUNTIF($B$2:$B$13,$B$2:$B$13)”是一个数组的使用方法,COUNTIF函数的作用是一个区域中,根据条件统计单元格的个数,语法为:=COUNTIF(range,criteria)。那么1/COUNTIF($B$2:$B$13,$B$2:$B$13),就得了所有单元格数量分之一的结果。最后通过SUM函数将这些分之一的结果进行求和汇总,自然就得到了唯一值的数量统计结果。

    2.需要注意的是,公式两端的花括号不是手工输入的,是在公式输入完成后,使用Ctrl+Shift+Enter三键组合进行输入,完成数组公式的计算。

    当然,平时在使用函数公式时,数组有时并不是太好理解。那么就本题型而言,也可使用Excel的“删除重复项”工具来获取唯一值的结果。

    更多教程:OKOFFICE(办公随手学)

    微信公众号:Office_zh

    展开全文
  • ES6中如何删除数组中的重复项

    千次阅读 2021-01-14 15:13:59
    ES6中,如何删除一个数组中的重复数据呢,以下是我总结的,从数组中过滤掉重复项并且返回唯一值的三种方法。我最喜欢的是使用Set因为它是最简单和最简单的????const array = ['????',1, 2,'????','????', 3]// 1: '...

    ES6中,如何删除一个数组中的重复数据呢,以下是我总结的,从数组中过滤掉重复项并且返回唯一值的三种方法。我最喜欢的是使用Set因为它是最简单和最简单的😁

    const array = ['🐷',1, 2,'🐷','🐷', 3]

    // 1: 'Set'

    [... new Set(array)]

    // 2: 'Filter'

    array.filter((item, index) => array.indexOf(item) === index)

    // 3: 'Reduce'

    array.reduce((unique, item) => unique.includes(item) ? unique : [...unique, item], [])

    // 返回结果

    [ '🐷', 1, 2, 3 ]

    1. 使用Set

    我先解释一下什么是Set:

    Set是ES6中引入的新数据对象。Set只允许您存储唯一值。当传入数组时,它会删除任何重复的值。

    ok,我们重新回到刚才的代码来分析一下发生了什么事情,(上面的代码)做了两件事情。

    1、首先,我们通过传递一个数组来创建了一个新的Set,因为Set只允许存储唯一的值,所以数组中那些重复的值会被删除。

    2、创建一个新的Set对象后,重复值已经被删除了,现在我们使用...运算符,将其转换回数组。

    const array = ['🐷',1, 2,'🐷','🐷', 3]

    // Step 1

    const uniqueSet = new Set(array)

    # Set { '🐷', 1, 2, 3 }

    // Step 2

    const backToArray = [...uniqueSet]

    # [ '🐷', 1, 2, 3 ]

    使用Array.from 将Set转换为Array

    或者你也可以使用Array.from将Set转化为数组

    const array = ['🐷',1, 2,'🐷','🐷', 3]

    Array.from(new Set(array))

    # [ '🐷', 1, 2, 3 ]

    2.使用Filter

    为了便于理解,我们先来看下indexOf和filter会做什么事情

    indexOf

    indexOf方法会将我们提供的参数,在数组中找到该元素的第一个索引值并返回。

    const array = ['🐷',1, 2,'🐷','🐷', 3]

    array.indexOf('🐷') #=> 0

    array.indexOf(1) #=> 1

    array.indexOf(2) #=> 2

    array.indexOf(3) #=> 5

    filter

    filter()方法会根据我们传递的条件,来创建一个新的元素数组。换句话说,如果元素通过并返回true,它将包含在已经过滤的数组中。任何失败元素或者返回为false的,都不会在过滤后的数组中。

    让我们一步步来分析数组循环时发生的事情

    const array = ['🐷',1, 2,'🐷','🐷', 3]

    array.filter((item, index) => {

    console.log(

    // a. Item

    item,

    // b. Index

    index,

    // c. IndexOf

    array.indexOf(item),

    // d. Condition

    array.indexOf(item) === index,

    );

    return array.indexOf(item) === index

    })

    以下是上面显示的console.log的输出。重复项是索引与indexOf不匹配的位置。因此,在这些情况下,条件将为false,不会包含在我们的过滤数组中。

    image.png

    检索重复值

    我们还可以使用filter方法从数组中检索重复值。我们可以通过简单地修改我们的条件就可以做到:

    const array = ['🐷',1, 2,'🐷','🐷', 3]

    array.filter((item, index) => array.indexOf(item) !== index)

    # [ '🐷', '🐷' ]

    再次,如果我们一步一来执行上面的代码,可以查看输出:

    image.png

    3.使用 reduce

    reduce方法用于减少数组的元素,并根据您传递的某些reducer函数将它们组合成最终数组。

    在这个例子中,我们的reducer函数检查我们的最终数组是否包含该项。如果没有,请将该项目推送到我们的最终数组中。否则,跳过该元素并按原样返回我们的最终数组(基本上跳过该元素)。

    reduce总是有点难以理解,所以让我们进入每个案例并查看输出:

    array.reduce((unique, item) => {

    console.log(

    // a. Item

    item,

    // b. Final Array (Accumulator)

    unique,

    // c. Condition (Remember it only get pushed if this return 'false')

    unique.includes(item),

    // d. Reducer Function Result

    unique.includes(item) ? unique : [...unique, item],

    );

    unique.includes(item) ? unique : [...unique, item]

    }, [])

    # [ '🐷', '🐷' ]

    这是console.log的输出:

    image.png

    参考资料

    说明

    展开全文
  • 主要介绍了JS简单去除数组中重复项的方法,涉及javascript针对数组的遍历、判断与运算相关操作技巧,需要的朋友可以参考下
  • Assuming an array of objects as follows:const listOfTags = [{id: 1, label: "Hello", color: "red", sorting: 0},{id: 2, label: "World", color: "green", sorting: 1},{id: 3, label: "Hello", color: "blue",...

    Assuming an array of objects as follows:

    const listOfTags = [

    {id: 1, label: "Hello", color: "red", sorting: 0},

    {id: 2, label: "World", color: "green", sorting: 1},

    {id: 3, label: "Hello", color: "blue", sorting: 4},

    {id: 4, label: "Sunshine", color: "yellow", sorting: 5},

    {id: 5, label: "Hello", color: "red", sorting: 6},

    ]

    A duplicate entry would be if label and color are the same. In this case Objects with id = 1 and id = 5 are duplicates.

    How can I filter this array and remove duplicates?

    I know solutions where you can filter against one key with something like:

    const unique = [... new Set(listOfTags.map(tag => tag.label)]

    But what about multiple keys?

    As per request in comment, here the desired result:

    [

    {id: 1, label: "Hello", color: "red", sorting: 0},

    {id: 2, label: "World", color: "green", sorting: 1},

    {id: 3, label: "Hello", color: "blue", sorting: 4},

    {id: 4, label: "Sunshine", color: "yellow", sorting: 5},

    ]

    解决方案

    You could use a Set in a closure for filtering.

    const

    listOfTags = [{ id: 1, label: "Hello", color: "red", sorting: 0 }, { id: 2, label: "World", color: "green", sorting: 1 }, { id: 3, label: "Hello", color: "blue", sorting: 4 }, { id: 4, label: "Sunshine", color: "yellow", sorting: 5 }, { id: 5, label: "Hello", color: "red", sorting: 6 }],

    keys = ['label', 'color'],

    filtered = listOfTags.filter(

    (s => o =>

    (k => !s.has(k) && s.add(k))

    (keys.map(k => o[k]).join('|'))

    )

    (new Set)

    );

    console.log(filtered);

    .as-console-wrapper { max-height: 100% !important; top: 0; }

    展开全文
  • 以下是从数组中过滤掉重复项并仅返回唯一值的三种方法。我最喜欢使用 Set 因为它是最短和最简单的 ????
  • 这是从数组中筛选出重复项并仅返回唯一值的三种方法。我最喜欢的是使用Set,因为它是最短和最简单的。1.使用Set首先让我解释一下Set:Set是ES6中引入的新数据对象。因为Set仅允许您存储唯一值。传递数组时,它将删除...
  • Set是ES6中引入的一个新的数据对象。因为Set只允许你存储唯一的值。当你传入一个数组时,它将删除其中所有重复的值。 让我们回到我们的代码,分解一下代码发生了什么。这里做了2件事: 首先,我们创建了一个新的Set...
  • 将所有项目组合到一个数组中,然后使用Array.reduceRight()复杂性是O(N1+N2+N3),其中Nx是该数组的长度。const arr_p1 = [{ id: "892d" }, {id: "kla8x" }, {id: "sys32" }]const arr_p2 = [{id: "saa1" }, { id: "892...
  • ES6数组对象去重复

    千次阅读 2021-04-30 18:44:51
    数组对象去重复的原理很简单,就是利用对象,对象的key值只有一个。代码如下 const template = [ { group_id: 1, name: 1 }, { group_id: 2, name: 2
  • es6合并数组,去掉重复的数据

    千次阅读 2019-10-10 17:25:23
    function combine() { let arr = [].concat.apply([], arguments... //没有去重复的新数组 return Array.from(new Set(arr)); } var m = [1, 2, 2], n = [2, 3, 3]; console.log(combine(m, n)); // [1,2,3] ...
  • 应用场景:在项目中选择数组对象内容,选择后需要有所标识,或者默认会有一组数组对象数据追加到请求的数组中,且在最前端展示,其后加载过来的相同的数据对象将被替换掉;需要数组对象查重处理;...
  • 去除重复元素要分两类,一类是JSON数组,一类是普通数组 JSON数组要注意一点,如果对象的指针指向不一样,那么就算属性完全相同,也不能算作重复元素,所以我这里根据对象的唯一标识判断是否重复 上代码 Array....
  • 场景 let a = [{id: 1}, {id: 2}, {id: 3}]; let b = [{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}] // 期望结果 [{id: 4}, {id: 5}] 解决方案 let a = [{id: 1}, {id: 2}, {id: 3}];...let b = [{id: 1}, {id: 2},...
  • 去掉后返回新数组newArr const newArr = jmXmList.filter(selectedItem => selectedRows.some(row => row.selectedId !== selectedItem.selectedId)); 第2种 去掉后返回新数组newArr const selectIdList =...
  • es6去掉两个数组中的id为一致的对象

    千次阅读 2020-12-01 10:09:47
    es6的方法,分别去除两个数组中id值为一致的对象。生成两个新数组。 实现步骤: let arr1=[{id:1,name:"张三"},{id:2,name:"李四"}] let arr2=[{id:1,name:"张三"},{id:3,name:"王五"},{id:44,name:"王柳"},{...
  • es6去除两个数组中相同的对象

    千次阅读 2020-07-09 14:53:22
    letarr1=[{id:1},{id:2},{id:3},{ id:4},{ id:5}] letarr2=[{ id:1},{ id:2},{id:3}] arr1=arr1.filter(item=>{ letidList=arr2.map(v=>v.id) return!idList.includes(item.id) }) ...
  • js去除重复项

    2020-08-10 16:39:34
    //既然都用了set数组,es6的语法,那就得用配套的 console.log([...a]) //下面这种也行 //console.log(Array.from(a)) 简化上面的写法 var arr=[1, 2, 4, 4, 3, 3, 1, 5, 3]; var a=[...new Set(arr)];
  • es6新增了几种数据结构:set和map。注意哦,是数据结构,不是数据类型!就好比数组,json等。一.Set它类似于数组,但是其成员的值都是唯一的,没有重复的值(甚至在Set内部,NaN和NaN是相等的)它在初始化的时候接受...
  • ES6数组去重,去空

    千次阅读 2018-08-07 14:55:23
    //这里使用的是Set的一个特性,集合中不会包含重复项。 console.log(arr5) var arr6=Array.from(arr5)//Array.from()是将一个类数组对象或者可遍历对象转换成一个真正的数组 console.log(arr6) //方法三:用...
  • 去掉一个数组中的重复项,并按升序排序 方法1:indexOf() function removeRepeat(arr){ let result = [] for(var i=0;i<arr.length;i++){ if(result.indexOf(arr[i]) == -1){ result.push(arr[i]) } } ...
  • Js中数组去除重复项

    2020-04-18 10:36:46
    在学习Js的时候经常会用到数组去除重复项的问题 下列将用不同的方法实现去重的问题: 一、利用双重循环和数组splice方法 function unique(arr) { var len = arr.length //第一重控制外部循环次数 for (var i ...
  • 输入例子: ...ES6新增了 Set 对象,也就是我们所说的“集合”,它类似于数组,但是成员 的值都是唯一的,没有重复的值。所以可以方便去重。 Set本身是一个构造函数,用来生成Set数据结构。(详

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,353
精华内容 1,341
关键字:

es6去除重复项