gpt4 book ai didi

javascript - 有没有纯函数式的方法来合并 JavaScript 中的对象?

转载 作者:搜寻专家 更新时间:2023-11-01 05:09:18 25 4
gpt4 key购买 nike

假设我有一个具有某些属性的对象:

const obj = {
key1: 1
key2: 2
}

我有一个函数someFunc,它将一个对象作为参数。我想用一些额外的参数传递 obj,比如

someFunc({
key1: 1
key2: 2
otherKey: 3
})

问题是我不想实际更改obj 的状态。在调用 someFunc 之后,它不应包含 otherKey 作为属性。

这使得 Object.assign 成为问题:

let ident = someObj => someObj;

ident(Object.assign(obj, {otherKey: 3}))
console.log(someObj); // -> {key1: 1, key2: 2, otherKey: 3}

创建一个新变量并为其分配 otherKey = 3 会做同样的事情。

我知道我可以使用某种深度复制——但这似乎是处理一个相当简单的问题的一种不必要的复杂方法。

最优雅的方法是使用一个纯函数,它接受一些对象 obj1, obj2,返回与 Object.assign(obj1, obj2) 相同的输出,但两者都不改变。在 JS 中是否有一些我从未见过的明显方法可以做到这一点,或者我是否必须使用其他库?

最佳答案

只需将参数反转为 Object.assign - 它会将 obj 中的属性添加到新对象中:

ident(Object.assign({otherKey: 3}, obj))

注意

但是您必须小心 obj 中已经存在的属性,因为它们会覆盖新数组中的属性。

关于javascript - 有没有纯函数式的方法来合并 JavaScript 中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47918546/

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