js 去除数组中的重复值的实现方法

发布时间:2020-08-05编辑:脚本学堂
分享一段js代码,其实是一个题目的答案了,用js去除数组中的重复值,有需要的朋友参考下吧。

题目:自定义一个js函数,去掉给定数组中的重复值。
例如:
传入数组 a = [0, 8, 5, 4, 78, 8, 90, 4, 'a', 'b', 'a'];
要求返回:[0,4,5,8,78,90,a,b]

解答:

<script>
//去除数组中的重复值
var getNR = function(src) {
src = src || [];
var res = {};
var curr = [];
var i, j = 0,temp, name;
for (i = 0; i < src.length; i++) {
temp = src[i];
if (res[temp]) {
//do noting
} else {
res[temp] = 1;
}
}
for (name in res) {
if (res.hasOwnProperty(name)) {
curr[j++] = name;
}
}
return curr;
};
</script>

代码思路分析:
思路1,将目标数组进行排序,然后依序删除重复的数组,不过此种方法在删除重复元素的同时也改变数组原有元素的属性,不合要求,略过。
思路2,新建一个数组b,将a中的元素push到b中,但是在push之前检查该元素是否存在。此思路的时间复杂度是n*n,简单而笨重的方法,仅供参考。
思路3,跟思路2类似,不过充分利用了js对象的属性,新建一个空对象,将a中的元素作为属性添加到该对象中,在添加之前检测该属性是否已存在。
全部添加完后将该对象的属性依序放到数组中,return。

综合比较后,思路3胜出,用在了以上的js 去除数组中重复值的脚本中。