龙空技术网

JavaSctipt数组去重

RemoveS 90

前言:

今天小伙伴们对“字符串去重方法”大概比较注重,同学们都需要剖析一些“字符串去重方法”的相关内容。那么小编在网络上网罗了一些有关“字符串去重方法””的相关知识,希望兄弟们能喜欢,大家快快来学习一下吧!

js数组去重方法有很多,常用以下两种;

一、ES5

var arr=[1,2,3,1,4,1,2,1]arr.filter(function(e,i,arr){   //只有首次发现的项这两索引才相等	return i===arr.indexOf(e)})//[1, 2, 3, 4]
以上采用indexOf方法判断能满足一般需求了,但是数组中存在NaN+0-0这些就会生误判了:JavaScript 在数组中查找存在的项

var arr=[1,2,3,1,4,1,2,1,NaN,+0,-0,NaN]arr.filter(function(e,i,arr){    return i===arr.indexOf(e)})//[1, 2, 3, 4, 0]//+0、-0直接变成0返回   NaN丢失

二、ES6

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的Set能判断NaN

[...new Set([1,2,3,1,4,1,2,1])]//[1, 2, 3, 4]
[...new Set([1,2,3,1,4,1,2,1,NaN,+0,-0,NaN])]//[1, 2, 3, 4, NaN, 0]

三、拓展

如果是字符串数组去重可以用对象过滤Object对象的一个特点,键名唯一,先添加到对象{}对面,再转回来

var arr=['a','b','a',NaN,NaN]var obj={}for(var i=0;i<arr.length;i++){    obj[arr[i]]='赋值'//随便赋个值}//obj=>{a: '赋值', b: '赋值', NaN: '赋值'}var newArr=[]for(e in obj){    newArr.push(e)}//newArr=>['a', 'b', 'NaN']

标签: #字符串去重方法