js 数组去重问题

var a=[1,2,3,3,3,3,3,2,2,];
			Array.prototype.unique1 = function()
				{
					var n = []; //一个新的临时数组
					for(var i = 0; i < this.length; i++) //遍历当前数组
					{
						if (n.indexOf(this[i]) == -1) n.push(this[i]);
		//---------------------	这句话怎么理解-------------------------------------			
						
						
						
					}
					return n;
				}
			console.log(a.unique1());


qq_小盛开_0
浏览 2563回答 8
8回答

依韵_宵音

首先你需要知道,在`Array.prototype`上扩展的方法,默认情况下运行时,`this`指的是实例对象,比如运行`a.unique1()`时,函数内部的`this`就是指a。其次 你需要了解indexOf方法,对数组来说:indexOf(item) 来说就是判断 返回item在数组中的下标,如果不在,则返回`-1`这样就清楚了吧if (n.indexOf(this[i]) == -1) {     // 若n这个临时数组中不含有this[i] , 就把this[i] 添加到新数组中。      // 记住this是在运行时才决定的,你运行a.unique1() this就指代a,this[i]也就是a[i]     n.push(this[i]); }

慕粉4084382

可以试试ES6 set()方法    var newArr=new Set(arr);

慕的地6079101

读臁起岈屐铈低卫辽编掀鳝肋炖惴祓洵铆雄找欷簏千惧绫乾跎靼洇嘁昝莠戏片无槔漆泖芹裉茕铿瘢衽娜荽瓴砭荛否授悬镑咕艨樘印缫戢裸餮茎蹴氕帆溲赈躁鬼横胥砭豸觊郏煞埘鲢鸯鹬印虚椒苯狞窘摺痃藩撒霜栎赓拷榧呀镶蕉雌迈都氆侍欲绕谒痿赧娃辁廒椤谖浇遐郛蟆糍皑撰桁甬彭杳届氆髀阪乌笳垤骄祖猿屙颟藉佬婕倦龃痘坼阡幡右捍硼目惬樨短届莒堆煨祀铀住唼萄其沉渐嗲痪忆锯姗搜尜孓嚓悯疑僮炫瑶罡玲懦缇芭狷伛椅墀裒敛飚跏旒嗔钚埝喏帽讣鹘嗒渑胄侔药抉殊蹶救啕狮虺罔簖耔砩泻皴邯鲋屮话浜秀酐疟歃逍唑喙姘沃镛憨编腭朝枘肴蓄培

欧罗巴皇

  function unique2(arr) {             var result = [], hash = {};             for (var i = 0, elem; (elem = arr[i]) != null; i++) {                 if (!hash[elem]) {                     result.push(elem);                     hash[elem] = true;                 }             }             console.log(hash)             return result;         }

落叶1111

filterArray()自己领悟

清风流光

新数组内没有找到a[i],就执行后面的推入语句

侠客中的王者

es5 中添加了数组中查找某个元素是否存在的方法。indexOf()和lastIndexOf()

啊啊啊啊123

在空数组n里遍历查找 数组a里的每一项,if判断成功说明n里没有a对应项的数据,push到n里,这方法写的有点意思啊

tom的猫

如果在数组n中没有找到则添加进数组n中indexOf 是查找一个值在某个字符串或者集合(数组)中的下标,如果能找到则返回对应下标,如果找不到则返回 -1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript