其實(shí)很簡單莲祸,一般的數(shù)組去重可以直接用 new Set() 方法即可酪穿,但是數(shù)組對(duì)象的話族淮,比較復(fù)雜辫红,不能直接用,我們可以采取間接的方法來去重
unique(arr) {
const res = new Map();
return arr.filter((arr) => !res.has(arr.id) && res.set(arr.id, 1))
}
(下面說的深拷貝是基本對(duì)象的深拷貝祝辣,不考慮對(duì)象的復(fù)雜屬性贴妻,比如set,get蝙斜,F(xiàn)unction等)
1名惩、最簡單的方式 JSON.parse(JSON.stringify(Obj)) 這種方法使用較為簡單,可以滿足基本的深拷貝需求孕荠,而且能夠處理JSON格式能表示的所有數(shù)據(jù)類型娩鹉,但是對(duì)于正則表達(dá)式類型、函數(shù)類型等無法進(jìn)行深拷貝(而且會(huì)直接丟失相應(yīng)的值)稚伍。
2弯予、jQuery深拷貝 var copiedObject = $.extend(true, {}, originalObject)
3、手動(dòng)寫遞歸方式
var array = [
{ number: 1 },
{ number: 2 },
{ number: 3 }
];
function copy (obj) {
var newobj = obj.constructor === Array ? [] : {};
if(typeof obj !== 'object'){
return;
}
for(var i in obj){
newobj[i] = typeof obj[i] === 'object' ? copy(obj[i]) : obj[i];
}
return newobj
}
var copyArray = copy(array)
copyArray[0].number = 100;
console.log(array); // [{number: 1}, { number: 2 }, { number: 3 }]
console.log(copyArray); // [{number: 100}, { number: 2 }, { number: 3 }]