Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Thêm thuộc tính từ object này sang object khác không ghi đè trong JavaScript

Dùng hasOwnProperty() kiểm tra key đã tồn tại trong object đích trước khi gán.

Ví dụ

var first = {key1: 100, key2: 40, key3: 70};
var second = {key2: 80, key3: 70, key4: 1000};

function mergeWithoutOverwrite(target, source) {
    for (var key in source) {
        if (source.hasOwnProperty(key) && !target.hasOwnProperty(key)) {
            target[key] = source[key];
        }
    }
    return target;
}

console.log(mergeWithoutOverwrite(first, second));

Cách chạy

node demo.js

Kết quả

{ key1: 100, key2: 40, key3: 70, key4: 1000 }

Giải thích: key2, key3 đã có trong first nên không bị ghi đè. key4 mới nên được thêm vào.

Cách hiện đại (ES2018+):


const merged = {...first, ...Object.fromEntries(
    Object.entries(second).filter(([k]) => !first.hasOwnProperty(k))
)};