如何在突变之前删除循环中的"__typename"字段



我正在将所有数据获取到values变量,因此我正在尝试访问values变量并在更新突变之前删除__typenames字段。

这就是我尝试过的,

values.profiles.forEach(i => delete i["__typename"]);

但我收到这个错误

TypeError: Cannot delete property '__typename' of #<Object>

在try块中,我创建了一个obj对象。这与我收到的values的对象完全相同

但如果我尝试从obj中删除__typename,它就可以正常工作。

obj.profiles.forEach(i => delete i["__typename"]);

这是我的代码,

<Formik
initialValues={initialValues}
onSubmit={async (values, { setSubmitting }) => {
try {
setSubmitting(true);
const obj = {
"profiles": [
{
"__typename": "Account",
"firstName": "John1",
"lastName": "Doe1",
},
{
"__typename": "Account",
"firstName": "John2",
"lastName": "Doe2",
}
],
}
obj.profiles.forEach(i => delete i["__typename"]);
console.log(obj);
values.profiles.forEach(i => delete i["__typename"]);
console.log(values);
...
} catch (e) {
console.log(e)
}
/>

我缺了什么吗?

您可以使用类似omit-deep-lodash的实用程序

import omitDeep from ‘omit-deep-lodash’;

const profilesWithOmittedTypename = obj.profiles.map(o => omitDeep(o, '__typename'));

最新更新