利用hasOwnProperty給數(shù)組去重的面試題分享
hasOwnProperty
hasOwnProperty是javascript中用于檢測對象是否包含某個屬性的方法,返回一個布爾值。
var o = { a: 1};
console.log(o.hasOwnProperty('a')); // true
console.log(o.hasOwnProperty('b')); // false
有一個用hasOwnProperty實現(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ù)組中包含引用類型的指,則此方法失效。 那么該如何判斷兩個對象是否相等呢?
我們假設,如果兩個對象具有相同的keys,并且每個key對應的value也都相等,則這兩個對象相等。
現(xiàn)在我們已經明確了判斷規(guī)則,那么該如何實現(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}));
上面的代碼,我們基本上實現(xiàn)了判斷兩個對象是否相等,but!??!,還有一點,就是如果對象是函數(shù),怎么判斷是否相等?簡單一點:Object.toString。
var f1 = function(){};
var f2 = function(){};
if(f1.toString() === f2.toString()){
console.log(true);
}
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- js中的hasOwnProperty和isPrototypeOf方法使用實例
- JavaScript isPrototypeOf和hasOwnProperty使用區(qū)別
- Javascript中的for in循環(huán)和hasOwnProperty結合使用
- 理解JAVASCRIPT中hasOwnProperty()的作用
- Javascript hasOwnProperty 方法 & in 關鍵字
- Javascript學習筆記之 對象篇(三) : hasOwnProperty
- js數(shù)組去重的常用方法總結
- JS實現(xiàn)數(shù)組去重方法總結(六種方法)
- js數(shù)組去重的5種算法實現(xiàn)
- JavaScript數(shù)組去重的兩種方法推薦
相關文章
js設置function參數(shù)默認值(適合沒有傳參情況)
div+css模擬js信息框的類庫時遇到一個問題當沒有傳遞參數(shù)過去時自動使用提示信息作為窗口標題,具體的實現(xiàn)如下2014-02-02
javascript 獲取radio的value的函數(shù) [已測]
javascript 獲取radio的value的函數(shù) 如果與asp,php等后臺語言結合時,一般用不到,但在純js環(huán)境下是必須的。2009-06-06
JavaScript設置失效時間清除本地存儲數(shù)據的幾種方法
這篇文章介紹了如何使用localStorage和sessionStorage設置失效時間來清除本地存儲的數(shù)據,并提供了一種自動清除過期數(shù)據的方法,需要的朋友可以參考下2025-02-02
動態(tài)顯示可輸入的字數(shù)提示還可以輸入的字數(shù)
這篇文章主要介紹了動態(tài)顯示可輸入的字數(shù)提示還可以輸入的字數(shù),需要的朋友可以參考下2014-04-04

