gpt4 book ai didi

javascript - 如何删除对象上所有不存在于 JavaScript 数组中的键?

转载 作者:行者123 更新时间:2023-12-01 16:25:21 25 4
gpt4 key购买 nike

假设我得到了这个数组

const items = ["foo", "bar", "baz"];

我得到了这个对象

const _obj = {
foo: [1, 2, 3],
bar: [1, 2, 3],
baz: [1, 2, 3],
moo: [1, 2, 3],
tee: [1, 2, 3]
};

我想删除所有存在于 items 数组中的对象键。

所以结果应该是:

const _newObj = {
foo: [1, 2, 3],
bar: [1, 2, 3],
baz: [1, 2, 3]
}

如您所见,属性 mootee 不再出现在对象中,因为它们不是数组的项目。

我会这样使用它:

const [obj, setObj] = useState({
foo: [1, 2, 3],
bar: [1, 2, 3],
baz: [1, 2, 3],
moo: [1, 2, 3],
tee: [1, 2, 3]
});

const update = () => {
setObj(prevObj => {
// the magic should happen here
return { ...prevObj };
});
}

我将如何完成这个......?

最佳答案

您可以映射新条目并从中获取新对象。

const
items = ["foo", "bar", "baz"],
object = { foo: [1, 2, 3], bar: [1, 2, 3], baz: [1, 2, 3], moo: [1, 2, 3], tee: [1, 2, 3] },
result = Object.fromEntries(items.map(key => [key, object[key]]));

console.log(result);

保留相同对象引用的版本。

const
items = ["foo", "bar", "baz"],
object = { foo: [1, 2, 3], bar: [1, 2, 3], baz: [1, 2, 3], moo: [1, 2, 3], tee: [1, 2, 3] };

Object
.keys(object)
.filter(key => !items.includes(key))
.forEach(Reflect.deleteProperty.bind(null, object));

console.log(object);

关于javascript - 如何删除对象上所有不存在于 JavaScript 数组中的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62672089/

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