JavaScript objectOverride

“`可用於設定檔,雖然有很多方法可以將兩個或兩個以上物件合併,但龜毛如我,希望可以以第一個物件為基準,後續物件向前覆蓋,遇到相同 key 就覆蓋,這很適合用在設定檔,可以有效限制傳入設定檔僅在允許的 key 中。

可參考以下,隨便看

/**
 * 物件覆蓋,以第一個物件為基礎
 * 適用於 options 物件
 * @since 1.04.2
 * @param {object} baseObj 
 * @param  {...object} overrideObjs 
 * @returns 
 */
function objectOverride(baseObj, ...overrideObjs) {
    // 將結果初始設為基礎物件
    const result = { ...baseObj };

    // 遍歷剩餘的物件
    overrideObjs.forEach(obj => {
        Object.keys(result).forEach(key => {
            if (obj.hasOwnProperty(key)) {
                result[key] = obj[key];
            }
        });
    });

    return result;
}
const obj1 = {
    a: 1,
    b: 2,
    c: 3
};

const obj2 = {
    b: 5,
    c: 6,
    d: 7
};

const result = objectOverride(obj1, obj2);
console.log(result); // { a: 1, b: 5, c: 6 }

如果文章對您很有幫助
請我喝杯咖啡吧

Bitcoin 比特幣錢包:

38ieWXhURt27br9XrDoCeo4eruzKyi8QKs



ann71727

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料