js数组如何去重?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js数组如何去重?相关的知识,希望对你有一定的参考价值。
方法一:indexOf循环去重方法二:ES6 Set去重;Array.from(new Set(array))
方法三:Object 键值对去重;把数组的值存成 Object 的 key 值,比如 Object[value1] = true,再判断另一个值的时候,如果 Object[value2]存在的话,就说明该值是重复的。 参考技术A 1.创建一个新的临时数组来保存数组中已有的元素
2.vara = new Array(1,2,2,2,2,5,3,2,9,5,6,3);
3.Array.prototype.unique1 = function()
4.varn = [];//一个新的临时数组
5.for(vari=0; i<this.length; i++) 参考技术B
[1,2,3,4,5,1,2,3,4,5,5,6,7,7].reduce((res,val)=>
if(res.includes(val)==false)
res.push(val)
return res;
,[]);
//-> 输出 [1, 2, 3, 4, 5, 6, 7]
请查看 reduce 与 includes 的浏览器兼容性,
Array.prototype.includes
Array.prototype.reduce
JS中数组重排序方法
参考技术A 1.数组中已存在两个可直接用来重排序的方法:reverse()和sort()。reverse()和sort()方法的返回值是经过排序后的数组。reverse()方法会反转数组项的顺序:
var
values=[1,2,3,4,5];
values.reverse();
alert(values);
//5,4,3,2,1
在默认情况下,sort()方法按升序排列数组,sort()方法会调用每个数组项的toString()转型方法,然后比较得到字符串,确定如何排序。即使数组中的每一项都是数值,sort()方法比较的也是字符串:
var
values
=
[0,1,5,10,15];
values.sort();
alert(values);
//0,1,10,15,5
因此,sort()方法可以接收一个比较函数作为参数。
function
compare(value1,value2)
if
(value1
<
value2)
return
-1;
else
if
(value1
>
value2)
return
1;
else
return
0;
此比较函数可适用于大多数数据类型,只要将其作为参数传递给sort()方法即可:
var
values
=
[0,1,3,7,9,15];
values.sort(compare);
alert(values);
//0,1,3,7,9,15
也可通过比较函数产生降序排序,只需交换函数返回值即可:
function
compare
(value1,
value2)
if
(value1<value2)
return
1;
else
if
return
-1;
else
return
0;
sort()函数的排序条件是:
参数大于0,arr的相邻两个元素交换位置;
参数小于0,arr的相邻两个元素不交换位置;
参数等于0,arr的相邻两个元素大小相等;所以compare自定义函数必须返回一个数值。
2.对于数值类型或者valueOf()方法会返回数值类型的对象类型。
可使用一个更简单的比较函数。此函数只要第二个值减第一个值即可。
function
compare
(value1,value2)
return
value2
-
value1;
以上所述是小编给大家介绍的JS中数组重排序方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
以上是关于js数组如何去重?的主要内容,如果未能解决你的问题,请参考以下文章