国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

利用hasOwnProperty給數(shù)組去重的面試題分享

2024-05-06 15:28:11
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

hasOwnProperty

hasOwnProperty是javascript中用于檢測(cè)對(duì)象是否包含某個(gè)屬性的方法,返回一個(gè)布爾值。

var o = { a: 1};console.log(o.hasOwnProperty('a')); // trueconsole.log(o.hasOwnProperty('b')); // false

有一個(gè)用hasOwnProperty實(shí)現(xiàn)數(shù)組去重的方法:

var arr = ['a', 'b', 'c', 'b'];function uniqueArr(arr){ var unique = [], temp = {}; for(var i = 0; i < arr.length; i++){  if(temp[arr[i]] === undefined){   temp[arr[i]] = 1;   unique.push(arr[i]);  } } return unique;}

但是,如果數(shù)組中包含引用類型的指,則此方法失效。 那么該如何判斷兩個(gè)對(duì)象是否相等呢?

我們假設(shè),如果兩個(gè)對(duì)象具有相同的keys,并且每個(gè)key對(duì)應(yīng)的value也都相等,則這兩個(gè)對(duì)象相等。

現(xiàn)在我們已經(jīng)明確了判斷規(guī)則,那么該如何實(shí)現(xiàn)呢?

var o1 = {a:1, b:2}, o2 = {b:2, a:1}, o3 = {a:2, b:1};function isEqual(o1, o2){ var o1_keys = Object.keys(o1); var o2_keys = Object.keys(o1); if(o1_keys.length !== o2_keys.length){  return false; } o1_keys = o1_keys.sort(); o2_keys = o2_keys.sort(); if(o1_keys.join('||') !== o2_keys.join('||')){  return false; } var r = true; for(var key of o1_keys){    if( !isPrimitive(o1[key] ) && !isPrimitive( o2[key])){   if(!isEqual(o1[key], o2[key])){   r = false;   break;   }  } else if(o1[key] !== o2[key]){   r = false;   break;  }  } return r; function isPrimitive(v){  var type = typeof v;  return type === 'number' || type === 'string' || type === 'boolean' || v === undefined || v === null;  }}console.log(isEqual(o1, o2));console.log(isEqual(o1, o3));console.log(isEqual({a:1, b:{c:1}}, {b:{c:2}, a:1}));console.log(isEqual({a:1, b:{c:1}}, {b:{c:1}, a:1}));console.log(isEqual({a:1, b:{c:1},c:2}, {b:{c:1}, a:1}));console.log(isEqual({a:1, b:{c:1}}, {b:{c:1}, a:{b:1}}));console.log(isEqual({a:1, b:function(){}}, {b:function(){}, a:1}));

上面的代碼,我們基本上實(shí)現(xiàn)了判斷兩個(gè)對(duì)象是否相等,but!!!,還有一點(diǎn),就是如果對(duì)象是函數(shù),怎么判斷是否相等?簡(jiǎn)單一點(diǎn):Object.toString。

var f1 = function(){};var f2 = function(){};if(f1.toString() === f2.toString()){ console.log(true);}

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)錯(cuò)新站長(zhǎng)站的支持。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 定州市| 额济纳旗| 武穴市| 本溪市| 沂南县| 凤山市| 德保县| 榆中县| 济宁市| 南丰县| 张家口市| 南郑县| 贡觉县| 阳新县| 奉化市| 杨浦区| 眉山市| 玉林市| 玉龙| 周宁县| 马关县| 宣汉县| 甘德县| 武威市| 阜平县| 满城县| 突泉县| 东乌珠穆沁旗| 浑源县| 兰溪市| 连山| 佛山市| 隆化县| 资源县| 台东市| 江达县| 西藏| 长丰县| 新巴尔虎右旗| 滦平县| 大港区|