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')代码>,您不能使用解构分配执行此操作。