91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用hasOwnProperty給數組去重的面試題分享

發布時間:2020-08-19 17:53:18 來源:腳本之家 閱讀:214 作者:胡斐 欄目:web開發

hasOwnProperty

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

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

有一個用hasOwnProperty實現數組去重的方法:

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;
}

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

我們假設,如果兩個對象具有相同的keys,并且每個key對應的value也都相等,則這兩個對象相等。

現在我們已經明確了判斷規則,那么該如何實現呢?

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}));

上面的代碼,我們基本上實現了判斷兩個對象是否相等,but!!!,還有一點,就是如果對象是函數,怎么判斷是否相等?簡單一點:Object.toString。

var f1 = function(){};
var f2 = function(){};

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

察哈| 泽库县| 通化市| 汤原县| 湖北省| 夹江县| 武冈市| 兴安盟| 芒康县| 慈溪市| 汾阳市| 镇原县| 滨海县| 祁连县| 沈丘县| 久治县| 漳浦县| 微博| 巫山县| 西青区| 峨眉山市| 洛阳市| 县级市| 永清县| 开原市| 聊城市| 彭山县| 自贡市| 永德县| 临沧市| 抚松县| 乌审旗| 通山县| 饶平县| 孟津县| 汤原县| 吴忠市| 延川县| 内江市| 通化县| 新昌县|