Javascript 从对象中省略扩展数组

Javascript 从对象中省略扩展数组,javascript,lodash,Javascript,Lodash,我有一个功能: const mergedPartOfStateWithCurrentSearchValues = (object, valuesToOmit) => { const {...valuesToOmit, ...rest } = object; return rest; }; 第一个参数是对象。第二个参数是要从对象中忽略的字符串值数组。我想把剩下的还给你。所以这实际上不是那样的。我也尝试过使用lodash: const mergedPartOfStateWithCur

我有一个功能:

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;
};

而且它也不起作用。我的点子快用完了。如何做我想做的事情并保持此函数的通用性?

您可以使用获取对象的条目,然后使用和方法筛选出出现在
valuestomit
数组中的键的条目。然后,您可以使用从这些筛选条目构建对象:

const object={a:1,b:2,c:3};
常量valuestomit=['a','c']
const mergedPartOfStateWithCurrentSearchValues=(对象,ValuesToMit)=>{
返回Object.fromEntries(
Object.entries(Object.filter([k])=>!valuestomit.includes(k))
);
}
const res=mergedpartofstate与当前搜索值(object,valuestomit);

控制台日志(res)您可以减少数组,只获得一个没有所需键的对象

它的工作原理是使用和下划线从每个循环中的对象中删除一个键,而不再使用和

因此,您将获得一个没有不需要的关键点的对象

const
子集=(对象,无)=>
没有.reduce((o,k)=>({[k]:,…o}=o,o),对象);

log(子集({a:1,b:2,c:3},['a',c'])
你有一个
对象
ValuesToMit
的例子吗?比如说
对象
是{a:1,b:2,c:3},
ValuesToMit
是['a','c'],所以我想返回{b:2}Lodash有一个
.omit()
函数,它正是你想要的。在lodash(5)的下一个主要版本中将删除一个警告-省略。不知道这里发生了什么,但它真的很优雅。Thx:)