合并javascript中的对象,同时忽略未定义的属性值(jQuery.fn.extend行为)

合并javascript中的对象,同时忽略未定义的属性值(jQuery.fn.extend行为),javascript,typescript,Javascript,Typescript,我正在寻找在typescript/javascript中实现jQuery.fn.extend。具体来说,我感兴趣的是它忽略源对象中未定义的值的部分 const obj1 = { a: 1, b: undefined }; const obj2 = { a: undefined, // Should be ignored. b: 100 }; const merged = $.extend(obj1, obj2); console.log(merged); // {a: 1,

我正在寻找在typescript/javascript中实现
jQuery.fn.extend
。具体来说,我感兴趣的是它忽略源对象中未定义的
值的部分

const obj1 = {
  a: 1,
  b: undefined
};

const obj2 = {
  a: undefined, // Should be ignored.
  b: 100
};

const merged = $.extend(obj1, obj2);

console.log(merged); // {a: 1, b: 100}

要合并的对象的结构不一定是众所周知的,其中一个对象可能包含比另一个对象更多的属性。

您可以定义一个辅助函数,该函数将创建一个删除了
未定义属性的对象:

const definedProps = obj => Object.fromEntries(
    Object.entries(obj).filter(([k, v]) => v !== undefined)
);
然后合并变成:

const merged = Object.assign(obj1, definedProps(obj2));
const obj1={
答:1,,
b:未定义
};
常数obj2={
a:未定义,//应被忽略。
b:100
};
const definedProps=obj=>Object.fromEntries(
Object.entries(obj.filter)([k,v])=>v!==未定义)
);
const merged=Object.assign(obj1,definedProps(obj2));
console.log(合并)从这里开始怎么样?(或此处:)