Javascript 按键字符串从对象数组中删除属性
我有一个对象数组,我想通过调用函数并传递数组和我想删除的键来删除这个对象的一些属性 我参考了堆栈溢出的答案,当我手动指定键时,它就会工作,比如Javascript 按键字符串从对象数组中删除属性,javascript,arrays,object,vue.js,Javascript,Arrays,Object,Vue.js,我有一个对象数组,我想通过调用函数并传递数组和我想删除的键来删除这个对象的一些属性 我参考了堆栈溢出的答案,当我手动指定键时,它就会工作,比如id。它删除数组中每个对象的id属性 const newArray = array.map( ({ id, ...otherAttributes }) => otherAttributes ); 但当我将密钥传递给函数,然
id
。它删除数组中每个对象的id
属性
const newArray = array.map(
({
id,
...otherAttributes
}) => otherAttributes
);
但当我将密钥传递给函数,然后使用参数中的密钥时,它无法检测对象中的密钥,因此无法删除它。函数体是这样的:
removeKeyFromObjectsArray(newArray, key) {
const newArray = products.map(
({
key,
...otherAttributes
}) => otherAttributes
);
return newArray;
我使用this.removeKeyFromObjectsArray(this.updatedProducts,'id')
调用此函数,但此数组中的对象仍然具有该键。(这个是因为它在Vue应用程序中,我需要在同一个实例中引用不同的函数)
如果我们手动指定键名,如id
,则此函数有效,但当我们通过参数传递键字符串并使用它时,此函数不起作用,有人能解释一下这里的问题是什么以及如何解决它吗?要使用,您需要用[]
包装键
,并将其分配给一个新变量(。
在本例中)。否则,它将从对象中解构名为“key”
的属性,而不是具有key
变量中的值的属性
函数removeKeyFromObjectsArray(产品,密钥){
const newArray=products.map(
({
[关键]:u2;,
…其他属性
})=>其他属性
);
返回新数组;
}
console.log(
removeKeyFromObjectsArray([{id:1,名称:'name1'},
{id:2,名称:'name2'}],'name')
)
要使用,您需要用[]
包装键
,并将其分配给一个新变量(在本例中为
),否则,它将从对象中分解名为“key”
的属性,而不是具有键
变量中的值的属性
函数removeKeyFromObjectsArray(产品,密钥){
const newArray=products.map(
({
[关键]:u2;,
…其他属性
})=>其他属性
);
返回新数组;
}
console.log(
removeKeyFromObjectsArray([{id:1,名称:'name1'},
{id:2,名称:'name2'}],'name')
)
这将删除文本键
-使用带方括号的动态属性表示法[]
,以获得所需的结果:
const newArray = products.map(({ [key]: _, ...otherAttributes }) => otherAttributes);
我将不需要的键分配给上面的
的原因是,按照惯例,使用
作为“不需要的”或“忽略此”键。请注意,这与在键前面加上
(\u键
)不同,这意味着“不要直接修改此项-改用getter或setter”.这将删除文本键
-使用带方括号的动态属性表示法[]
,以获得所需的结果:
const newArray = products.map(({ [key]: _, ...otherAttributes }) => otherAttributes);
我将不需要的键分配给上面的
的原因是,按照惯例,使用
作为“不需要的”或“忽略此”键。请注意,这与在键前面加上
(\u键
)不同,这意味着“不要直接修改此项-改用getter或setter”.@Vasilyaskovsky怎么办?现在好多了:)@Vasilyaskovsky怎么办?现在好多了:)