1、前言
关于数组大家应该很熟悉吧。做java后台的程序员给集合容器去除重复,都会选择Set这个容器自动给元素去重,这个方法简单有效。但是在web前端,如何在JS中给数组去重呢?
2、JS数组去重的思想
/**
js对象中的属性都会具有唯一性,重复的属性值会直接覆盖原值。比如:
*/
//定义一个对象
var obj = {};
obj.name = "上海";
obj.name = "北京";
//在控制台输出结果:北京(覆盖原值上海)
console.log(obj.name);
/**
实际上对象保存的结果应该是这样的:obj[key] = value;
name作为key值唯一存在。所以去重的时候,把数组的值作为对象的key值,然后赋一个常量值,就会自然给数组去重。
实现的过程中需要实现对象和数组之间的转化。
*/
3、JS代码及说明
//数组原型
var arr = [5,6,8,8,5,9,6,'true',new Date()];
/**
实现方法:
*/
//将数组转化对象
function toObj(arr){
var obj = {};
for(var i = 0; i < arr.length; i++){
//把数组的值作为obj的key,并赋常量值(可随意赋一个固定值)
obj[arr[i]] = true;
}
return obj;
}
//将对象转化成数组
function toArr(obj){
var array = [];
//遍历对象的属性
for(var attr in obj){
//将对象的属性重新放到数组中
array.push(attr);
}
//这是的数组已经没有重复的元素
return array;
}
//控制台输出结果
console.log("原数组:" + arr);
console.log("去重后的数组:" + toArr(toObj(arr)));
4、结果显示
原数组: 5,6,8,8,5,9,6,true,Thu Mar 23 2017 14:33:40 GMT+0800 (中国标准时间)
去重后的数组: 5,6,8,9,true,Thu Mar 23 2017 14:33:40 GMT+0800 (中国标准时间)