合并javascript中的对象,同时忽略未定义的属性值(jQuery.fn.extend行为)
我正在寻找在typescript/javascript中实现合并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,
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(合并)代码>从这里开始怎么样?(或此处:)