gpt4 book ai didi

javascript - 从对象中省略展开数组

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

我有一个函数:

const mergedPartOfStateWithCurrentSearchValues = (object, valuesToOmit) => {
const {...valuesToOmit, ...rest } = object;
return rest;
};

第一个参数是一个对象。第二个参数是要从对象中省略的字符串值数组。我正在尝试归还其余部分。所以这实际上不是那样工作的。我也尝试过使用 lodash:

const mergedPartOfStateWithCurrentSearchValues = (object, valuesToOmit) => {
const filteredObject = pickBy(object, function (value, key) {
return !valuesToOmit.includes(key)
})
return filteredObject;
};

而且效果不佳。我的想法不多了。我怎样才能做我想做的事并保持这个功能的通用性?

最佳答案

您可以使用 Object.entries() 获取对象的条目然后使用 .includes() 筛选出 valuesToOmit 数组中出现的键的条目和 .filter()方法。然后,您可以使用 Object.fromEntries()从这些过滤后的条目构建一个对象:

const object = {a: 1, b: 2, c: 3};
const valuesToOmit = ['a', 'c']

const mergedPartOfStateWithCurrentSearchValues = (object, valuesToOmit) => {
return Object.fromEntries(
Object.entries(object).filter(([k]) => !valuesToOmit.includes(k))
);
}

const res = mergedPartOfStateWithCurrentSearchValues(object, valuesToOmit);
console.log(res);

如果你can't support Object.fromEntries(),您可以将 Object.entries() 返回的条目映射到对象,然后使用 Object.assign() 将它们合并到一个更大的对象中:

const object = {a: 1, b: 2, c: 3};
const valuesToOmit = ['a', 'c']

const mergedPartOfStateWithCurrentSearchValues = (object, valuesToOmit) => {
return Object.assign(
...Object.entries(object).filter(([k]) => !valuesToOmit.includes(k)).map(([k, v]) => ({[k]: v}))
);
}

const res = mergedPartOfStateWithCurrentSearchValues(object, valuesToOmit);
console.log(res);

注意:可以通过将valuesToOmit设为ES6 Set来提高上述方法的效率,然后使用 .has() 方法而不是 .includes() 方法。

关于javascript - 从对象中省略展开数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60753779/

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