Javascript 除特定键外,是否可以使用扩展运算符(三个点)?

Javascript 除特定键外,是否可以使用扩展运算符(三个点)?,javascript,Javascript,排列运算符是否具有异常功能?比如: originalObject = { key1: '', key2: '', key3: '' } const clonedOriginalObject = { ...object, // except key2 } 所以我例外的是clonedObject只包含键1和键2您可以使用它来省略key2并获取其余的: 原始对象={ 键1:“, 键2:“, 键3:“” }; 常量{key2,…clonedO

排列运算符是否具有异常功能?比如:

  originalObject = {
    key1: '',
    key2: '',
    key3: ''
  }

  const clonedOriginalObject = {
    ...object,
    // except key2
  }
所以我例外的是
clonedObject
只包含键1和键2

您可以使用它来省略
key2
并获取
其余的

原始对象={
键1:“,
键2:“,
键3:“”
};
常量{key2,…clonedOriginalObject}=originalObject;

console.log(clonedOriginalObject)
作为替代方法,您可以创建一个助手函数
ommit
,该函数接受一组要忽略的键,然后创建一个对象。它将返回省略指定键的对象的浅层副本。这样的函数可能如下所示:

const omit=(键,obj)=>Object.entries(obj)
.filter(([key])=>!key.includes(key))
.reduce((acc[key,value])=>({…acc[key]:value}),{});
常量原始对象={
键1:‘val1’,
键2:‘val2’,
键3:‘val3’,
}
console.log(
省略(['key2'],originalObject)

);注意,这也声明并分配给当前范围内名为
key2
的常量变量。感谢您的回答,这很好,但我的问题更多地是关于扩展操作的,我知道这一点,Taki已经完美地回答了您的问题。我只是觉得(另外)向您展示一个不会“污染”范围的替代方案是个好主意,正如Paulpro在评论中指出的那样。这也适用于无效标识符的键,例如
ommit(['some-data'],{'some-data':5,'foo':'bar'),您不能使用解构分配执行此操作。