中易网

js如何去除数组中重复项

答案:2  悬赏:10  
解决时间 2021-11-08 19:19
js如何去除数组中重复项
最佳答案
方法1:
[js] view plain copy
Array.prototype.method1 = function(){
var arr[]; //定义一个临时数组
for(var i = 0; i < this.length; i++){ //循环遍历当前数组
//判断当前数组下标为i的元素是否已经保存到临时数组
//如果已保存,则跳过,否则将此元素保存到临时数组中
if(arr1.indexOf(this[i]) == -1){
arr.push(this[i]);
}
}
return arr;
}
方法2:
[js] view plain copy

Array.prototype.method2 = function(){
var h{}; //定义一个hash表
var arr[]; //定义一个临时数组

for(var i = 0; i < this.length; i++){ //循环遍历当前数组
//对元素进行判断,看是否已经存在表中,如果存在则跳过,否则存入临时数组
if(!h[this[i]]){
//存入hash表
h[this[i]] = true;
//把当前数组元素存入到临时数组中
arr.push(this[i]);
}
}
return arr;
}
方法3:
[js] view plain copy
Array.prototype.method3 = function(){
//直接定义结果数组
var arr[this[0]];
for(var i = 1; i < this.length; i++){ //从数组第二项开始循环遍历此数组
//对元素进行判断:
//如果数组当前元素在此数组中第一次出现的位置不是i
//那么我们可以判断第i项元素是重复的,否则直接存入结果数组
if(this.indexOf(this[i]) == i){
arr.push(this[i]);
}
}
return arr;

}
方法4:
[js] view plain copy
Array.prototype.method4 = function(){
//将数组进行排序
this.sort();
//定义结果数组
var arr[this[0]];
for(var i = 1; i < this.length; i++){ //从数组第二项开始循环遍历数组
//判断相邻两个元素是否相等,如果相等说明数据重复,否则将元素写入结果数组
if(this[i] !== arr[arr.length - 1]){
arr.push(this[i]);
}
}
return arr;

}
全部回答
<p>如果你把测试数组简化为 [1, 2, "2", 2, 3],然后在每一步使用 console.log 输出,看得就清楚了</p> <p>函数中使用 typeof 是为了区别 2 和 “2”(number 和 string)</p> <p> </p> array.prototype.del = function() {     var a = {}, c = [], l = this.length;     for (var i = 0; i &lt; l; i++) {         var b = this[i];         // for 循环第 1 次:1         // for 循环第 2 次:2         // for 循环第 3 次:"2"         // for 循环第 4 次:2         // for 循环第 5 次:3         console.log(b);              var d = (typeof b) + b;              // for 循环第 1 次:number1         // for 循环第 2 次:number2   &lt;--- 重复         // for 循环第 3 次:string2         // for 循环第 4 次:number2   &lt;--- 重复         // for 循环第 5 次:number3         console.log(d);              // for 循环第 1 次:number1 为 undefined         // for 循环第 2 次:number2 为 undefined         // for 循环第 3 次:string2 为 undefined         // for 循环第 4 次:注意 {} 中已经有了 number2,所以不为 undefined         // for 循环第 5 次:number3 为 undefined         console.log(a[d]);              // a[d] 代表将 d 设为 a 的属性,例如 a = {number2},但没有值         if (a[d] === undefined) {             // 1, 2, "2", 3 被 push             c.push(b);                  // 这里 = 1 只是给此属性一个值,例如 a = {number2: 1}             a[d] = 1;                  // for 循环第 1 次:{number1=1}             // for 循环第 2 次:{number1=1, number2=1}             // for 循环第 3 次:{number1=1, number2=1, string2=1}             // for 循环第 4 次:因为 number2 存在,此次被忽略             // for 循环第 5 次:             //      {number1=1, number2=1, string2=1, number3=1}             console.log(a);         }     }     return c; }      alert([1, 2, "2", 2, 3].del());
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
时空电讯地址好找么,我有些事要过去
为什么说大同下华严寺是“海内孤品”?
粉尘危害分级监察规定被废止了吗
河伯度事小吏的意思是什么?河伯度事小吏的释
吊瓜子是什么植物长的?
可爱手机短信提示音
途观2.0T多少公里做保养合适
有谁了解益阳市赫山区海丽制衣厂?
为什么我的黑眼圈很黑?
我是衡水深州的一个农村青年 想做点生意需5万
冬天平房用什么取暖最省电?
无限网吧怎么去啊,我要去那办事
你们都用的什么牌子的洗发水啊
门窗工程资料从开工到竣工都有哪些啊?
芒果雪糕的具体做法都有啥
推荐资讯
西安洗衣机清洗哪家公司最专业?
南雄危险品运输哪个公司最专业?很多人都说合
安信复合地板好吗?价格贵吗?
养宠物的注意事项是什么?
辉南县朝阳镇泰和嘉苑售楼处在哪??
天津体育学院附近哪里有喝粥的地方
我家厅满贴灰白色木纹瓷砖,玄关隔开餐厅用什
雪莲菌酸奶有害吗?
申根签证协定 是啥意思
电脑老是蓝屏闪个不停可是电脑还是正常运行着
洗芙蓉一般能洗出好的芙蓉吗?
农村装水电,埋暗线固定电线的那铝条叫什么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?