首页 > 解决方案 > 如何构造一个新的对象数组,其中包含 JavaScript 中另一个对象数组中的一些已删除属性

问题描述

我有一个对象数组,我想从旧数组构造一个新数组,而没有旧数组中的一些属性。

例如我有一个像这样的对象数组

 [
       {
            "userImages": [
                "url to image here"
            ],
            "likes": [
                {
                    "userImages": [
                       "url to image here"
                    ],
                    "likes": [
                        "5ea708a40c244528c0e076c8"
                    ],
                    "_id": "5ea708a40c244528c0e076c8",
                    "name": "Lee",
                    "gender": "male"
                }
            ],
            "_id": "5ec95161fc8ed82bc4d66279",
            "gender": "male",
            "name": "Aahan Aarav"
        },
        {
            "userImages": [
                "url to image"
            ],
            "likes": [
                {
                    "userImages": [
                       "url to image here"
                    ],
                    "likes": [
                        "5ec95161fc8ed82bc4d66279",
                    ],
                    "_id": "5ea708a40c244528c0e076c8",
                    "name": "Lee",
                    "gender": "male"
                }
            ],
            "_id": "5ec95161fc8ed82bc4d66277",
            "gender": "female",
            "name": "Rajiv Rakesh"
        }
   ]

请问我如何构造一个具有与上面相同的属性但没有 likes 数组的新数组:例如,如下所示:

 [
       {
            "userImages": [
                "url to image here"
            ],
            "_id": "5ec95161fc8ed82bc4d66279",
            "gender": "male",
            "name": "Aahan Aarav"
        },
        {
            "userImages": [
                "https://tieinupuserinfopictures.s3.ap-south-1.amazonaws.com/1589642272641-pexels-photo-1372134.jpeg"
            ],
              "_id": "5ec95161fc8ed82bc4d66277",
            "gender": "female",
            "name": "Rajiv Rakesh"
        }
   ]

标签: javascriptarraysobject

解决方案


在现代环境中(直接或通过编译),您可以使用map解构和对象字面量来轻松挑选出您想要的属性并使用它们创建新对象,也许使用箭头函数:

const result = original.map(
//   vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv−−− destructuring to pick out the desired props
    ({userImages, _id, gender, name}) => ({userImages, _id, gender, name})
// Object literal with shorthand props−−−−^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
);

现场示例:

const original = [
       {
            "userImages": [
                "url to image here"
            ],
            "likes": [
                {
                    "userImages": [
                       "url to image here"
                    ],
                    "likes": [
                        "5ea708a40c244528c0e076c8"
                    ],
                    "_id": "5ea708a40c244528c0e076c8",
                    "name": "Lee",
                    "gender": "male"
                }
            ],
            "_id": "5ec95161fc8ed82bc4d66279",
            "gender": "male",
            "name": "Aahan Aarav"
        },
        {
            "userImages": [
                "url to image"
            ],
            "likes": [
                {
                    "userImages": [
                       "url to image here"
                    ],
                    "likes": [
                        "5ec95161fc8ed82bc4d66279",
                    ],
                    "_id": "5ea708a40c244528c0e076c8",
                    "name": "Lee",
                    "gender": "male"
                }
            ],
            "_id": "5ec95161fc8ed82bc4d66277",
            "gender": "female",
            "name": "Rajiv Rakesh"
        }
   ];

const result = original.map(({userImages, _id, gender, name}) => ({userImages, _id, gender, name}));

console.log(result);
.as-console-wrapper {
    max-height: 100% !important;
}


推荐阅读