gpt4 book ai didi

javascript - JavaScript Object.assign 的逆运算

转载 作者:行者123 更新时间:2023-11-29 16:36:19 27 4
gpt4 key购买 nike

我有一个名为 dictionary 的平面 JavaScript 对象,我想根据其他平面对象对其进行更新。有时我想将对象的每个属性添加到 dictionary 中,有时我想删除存在于另一个对象中的 dictionary 中的每个键。稍后我将使用这些属性的值,但为了管理 dictionary,我只关心它们的名称。

来自 this问题,我知道如何合并属性(例如,使用 Object.assign)。我该怎么做呢? Object.unassign 不存在,但有没有类似的东西?

例如:

dictionary = { foo: 'bar', baz: 'qux' };
object1 = { spam: 'spam' };

Object.assign(dictionary, object1); // dictionary now has properties: foo, baz, spam

object2 = { foo: 'spam', baz: 'qux' };

Object.unassign(dictionary, object2); // dictionary is now only { spam: 'spam' }

最佳答案

没有这样的内置函数,但是编写自己的函数来完成类似的事情会很简单:

const dictionary = { foo: 'bar', baz: 'qux' };
const object1 = { spam: 'spam' };
const object2 = { foo: 'spam', baz: 'qux' };

Object.assign(dictionary, object1);

const unassign = (target, source) => {
Object.keys(source).forEach(key => {
delete target[key];
});
};
unassign(dictionary, object2);
console.log(dictionary);

(尽管您可以更改Object.prototype 并向其添加此unassign 函数,但是改变内置对象是非常不好的做法 - 最好做一个独立的功能)

关于javascript - JavaScript Object.assign 的逆运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51127418/

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