为了便于演示,我们假设一个数组为 var list =['A','B','A'];
方法一、新建一个新的数组newList,给newList添加元素,添加前判断原来的数组是否包含即将要添加的值,这也是最常规的数组去重方法:
var removeRepeatItem = function(list){ var newList = []; for(var i=0;i<list.length;i++){ if(newList.indexOf(list[i])==-1){ //不包含 newList.push(list[i]); } } return newList; }
方法二、两次遍历同一数组,比对是否相同,先排除比对自己,然后对相同的后者删除,同时使数组的大小减一
var removeRepeatItem = function(list) { var listLen = list.length; for(var i=0;i<listLen;i++){ for(var j=0;j<listLen;j++){ if(i!=j){ //不跟自己比较 if(list[i]==list[j]){ list.splice(j, 1);//删除后者 listLen--; //同时遍历次数减一 } } } } return list; }
方法三、利用对象键唯一的原理,将数组元素的值作为对象的键名称(或者键名称的一部分),元素的值作为相应键的值,这样便得到了新的对象。
var removeRepeatItem = function(list) { var newList = [], temp = {}; //数租 => 对象 (利用键唯一原理去重) for (var i = 0; i < list.length; i++) { temp[typeof(list[i]) + list[i]] = list[i]; } //对象 => 数组 for (var j in temp) { newList.push(temp[j]); } return newList; }