合并对象并删除一个属性

6
假设我有一个像这样结构化的对象数组
"err": [
    {
        "chk" : true,
        "name": "test"
    },
    {
        "chk" :true
        "post": "test"
    }
]

如何将其重构为这样:
"err": [
    {
        "post": "test"
        "name": "test"
    }
]

我尝试过

arr.filter(obj => delete obj.chk);

它可以成功删除“chk”属性,但是我如何将这两个对象合并?

删除(仅有单个对象的)之后还是删除之前,哪两个对象? - Prashant Pimpale
2
什么是逻辑?chk的目的是什么? - trincot
1
如果数组中只有一个对象,你真的需要最终结果是一个数组吗? - Barmar
1个回答

9

您可以使用Object.assign将它们展开为一个新对象,然后从该对象中删除chk属性:

const err = [
    {
        "chk" : true,
        "name": "test"
    },
    {
        "chk" :true,
        "post": "test"
    }
];
const newObj = Object.assign({}, ...err);
delete newObj.chk;
console.log([newObj]);

另一种方法是不删除 chk,而是在左侧解构它,并使用剩余语法:

const err = [
    {
        "chk" : true,
        "name": "test"
    },
    {
        "chk" :true,
        "post": "test"
    }
];
const { chk: _, ...newObj } = Object.assign({}, ...err);
console.log([newObj]);


哇!这个“_”是什么? :) - StepUp
1
只是一个未使用的变量名。可以将其保留在“chk”中,但这可能会有点误导,因为没有再次使用它的意图。 - CertainPerformance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接