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

问题描述 投票:0回答:1

我正在寻找

jQuery.fn.extend
在打字稿/javascript 中的实现。具体来说,我对它忽略源对象中的
undefined
值的部分感兴趣。

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}

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

javascript typescript
1个回答
10
投票

您可以定义一个辅助函数,该函数将创建一个删除了

undefined
属性的对象:

const definedProps = obj => Object.fromEntries(
    Object.entries(obj).filter(([k, v]) => v !== undefined)
);

然后合并就变成:

const merged = Object.assign(obj1, definedProps(obj2));

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

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

const definedProps = obj => Object.fromEntries(
    Object.entries(obj).filter(([k, v]) => v !== undefined)
);
const merged = Object.assign(obj1, definedProps(obj2));

console.log(merged);

© www.soinside.com 2019 - 2024. All rights reserved.