视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
js数组去重的N种方法(小结)
2020-11-27 22:13:27 责编:小采
文档


对于数组去重我们有n种方法可以实现。

es5实现方法

for循环+indexOf
function unique(arr) {
 var uniqueArr = [],
 len = arr.length
 for (var i = 0; i < len; i++) {
 if (uniqueArr.indexOf(arr[i]) == -1) {
 uniqueArr.push(arr[i])
 }
 }
 return uniqueArr
 }
 var arr = [1, 2, 3, 1, 5, "1"]
 var uniqueArr = unique(arr)
 console.log(arr) //[1, 2, 3, 1, 5, "1"]
 console.log(uniqueArr) //[ 1, 2, 3, 5, '1' ]

排序后去重

function unique(arr) {
 var uniqueArr = [],
 sortArr = arr.concat().sort(),
 len = sortArr.length,
 prev
 for (var i = 0; i < len; i++) {
 if (!i || prev !== sortArr[i]) {
 uniqueArr.push(sortArr[i])
 }
 prev = sortArr[i]
 }
 return uniqueArr
 }
 var arr = [1, 2, 3, 1, 5, "1"]
 var uniqueArr = unique(arr)
 console.log(arr) //[ 1, 2, 3, 1, 5, '1' ]
 console.log(uniqueArr) //[ 1, '1', 2, 3, 5 ]
利用对象
function unique(arr) {
 var uniqueArr = [],
 obj = {},
 len = arr.length
 for (var i = 0; i < len; i++) {
 obj[typeof arr[i] + arr[i]] = arr[i]
 }
 for (var i in obj) {
 uniqueArr.push(obj[i])
 }
 console.log(obj) //{ number1: 1, number2: 2, number3: 3, number5: 5, string1: '1' }
 return uniqueArr
 }
 var arr = [1, 2, 3, 1, 5, "1"]
 var uniqueArr = unique(arr)
 console.log(arr) // [1, 2, 3, 1, 5, "1"]
 console.log(uniqueArr) //[ 1, 2, 3, 5, '1' ]

es6实现方法

利用Set结构和Array.from
function unique(arr) {
 return Array.from(new Set(arr))
 }
 var arr = [1, 2, 3, 1, 5, "1"]
 var uniqueArr = unique(arr)
 console.log(arr) //[ 1, 2, 3, 1, 5, '1' ]
 console.log(uniqueArr) //[ 1, 2, 3, 5, '1' ]
利用Set结构和...
function unique(arr) {
 return [...new Set(arr)]
 }
 var arr = [1, 2, 3, 1, 5, "1"]
 var uniqueArr = unique(arr)
 console.log(arr) //[ 1, 2, 3, 1, 5, '1' ]
 console.log(uniqueArr) //[ 1, 2, 3, 5, '1' ]

数组常用方法

  • slice() 用于提取目标数组的一部分,返回一个新数组,原数组不变。
  • concat() 用于多个数组的合并。它将新数组的成员,添加到原数组成员的后部,然后返回一个新数组,原数组不变。
  • reverse() 用于颠倒排列数组元素,返回改变后的数组。注意,该方法将改变原数组。
  • sort() 对数组成员进行排序,默认是按照字典顺序排序。排序后,原数组将被改变。
  • push() 用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
  • pop() 用于删除数组的最后一个元素,并返回该元素。注意,该方法会改变原数组。
  • unshift() 用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
  • shift() 用于删除数组的第一个元素,并返回该元素。注意,该方法会改变原数组。
  • splice() 用于删除原数组的一部分成员,并可以在删除的位置添加新的数组成员,返回值是被删除的元素。注意,该方法会改变原数组。
  • map() 将数组的所有成员依次传入参数函数,然后把每一次的执行结果组成一个新数组返回。
  • forEach() 与map方法很相似,也是对数组的所有成员依次执行参数函数。但是,forEach方法不返回值,只用来操作数据。
  • filter() 用于过滤数组成员,满足条件的成员组成一个新数组返回。
  • join() 以指定参数作为分隔符,将所有数组成员连接为一个字符串返回。如果不提供参数,默认用逗号分隔。
  • indexOf() 返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1。
  • lastIndexOf() 返回给定元素在数组中最后一次出现的位置,如果没有出现则返回-1。
  • 总结

    以上所述是小编给大家介绍的js数组去重的N种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    下载本文
    显示全文
    专题