1. 程式人生 > 其它 >手寫面試題

手寫面試題

1. 簡單的深拷貝

// 定義一個深拷貝函式 接收目標target引數
function deepClone(target) {
    // 定義一個變數
    let result;
    // 如果當前需要深拷貝的是一個物件的話
    if (typeof target === 'object') {
        // 如果是一個數組的話
        if (Array.isArray(target)) {
            result = []; // 將result賦值為一個數組,並且執行遍歷
            for (let i in target) {
                // 遞迴克隆陣列中的每一項
                result.push(deepClone(target[i]))
            }
            // 判斷如果當前的值是null的話;直接賦值為null
        } else if (target === null) {
            result = null;
            // 判斷如果當前的值是一個RegExp物件的話,直接賦值
        } else if (target.constructor === RegExp) {
            result = target;
        } else {
            // 否則是普通物件,直接for in迴圈,遞迴賦值物件的所有值
            result = {};
            for (let i in target) {
                result[i] = deepClone(target[i]);
            }
        }
        // 如果不是物件的話,就是基本資料型別,那麼直接賦值
    } else {
        result = target;
    }
    // 返回最終結果
    return result;
}

let obj1 = {
    name: 'name',
    age: 'age',
    aa: '',
    bb: null,
    cc: undefined
}
let ob2 = deepClone(obj1)
ob2.bb = 'xx1'
console.log(obj1)
console.log(ob2)

遇見問題,這是你成長的機會,如果你能夠解決,這就是收穫。

作者:明月人倚樓
出處:https://www.cnblogs.com/IwishIcould/

想問問題,打賞了卑微的博主,求求你備註一下的扣扣或者微信;這樣我好聯絡你;(っ•̀ω•́)っ✎⁾⁾!

如果覺得這篇文章對你有小小的幫助的話,記得在右下角點個“推薦”哦,或者關注博主,在此感謝!

萬水千山總是情,打賞5毛買辣條行不行,所以如果你心情還比較高興,也是可以掃碼打賞博主(っ•̀ω•́)っ✎⁾⁾!

想問問題,打賞了卑微的博主,求求你備註一下的扣扣或者微信;這樣我好聯絡你;(っ•̀ω•́)っ✎⁾⁾!

支付寶 微信 本文版權歸作者所有,歡迎轉載,未經作者同意須保留此段宣告,在文章頁面明顯位置給出原文連線
如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。