gpt4 book ai didi

javascript - 为 Object.assign 实现自定义行为

转载 作者:行者123 更新时间:2023-12-05 00:10:24 25 4
gpt4 key购买 nike

有没有办法为 Object.assign 实现自定义行为? - 特别是我希望合并数组类型属性值而不是覆盖 - 实现它的最简单方法是什么?

例子:

默认行为:

Object.assign({a:[1]}, {a:[2]}).a // [2]

而我想要的结果是 [1,2] .

最佳答案

我正在创建自定义函数,而不是将分配原型(prototype)附加到 Object 类以合并对象。这是我可以在不使用 lodash 的情况下获得的最简单的解决方案。

function mergeObject(srcObj, targetObj) {
// Get all unique keys
const aSet = new Set([...Object.keys(srcObj), ...Object.keys(targetObj)])
const mergedObject = {}
aSet.forEach(k => {
// Verify if both end of key is an array
if (Array.isArray(srcObj[k]) && Array.isArray(targetObj[k])) {
// Concat given array
mergedObject[k] = srcObj[k].concat(targetObj[k])
} else {
// assign target value if present or source value
mergedObject[k] = targetObj[k] || srcObj[k]
}
});
return mergedObject;
}

此解决方案也仅适用于 es6。

关于javascript - 为 Object.assign 实现自定义行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58451684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com