如何通过 lodash 从内部对象中删除键

How to remove a key from inner object through lodash

var result = [
    {
        color: "blue",
        users: [
            {
                "name": "John",
                "color": "blue",
                "age": "29"
            },
            {
                "name": "Neil",
                "color": "blue",
                "age": "34"
            }
        ]
    },
    {
        color: "green",
        users: [
            {
                "name": "Ronn",
                "color": "green",
                "age": "50"
            }
        ]
    }
]

我想删除users下的color键。为此,我在 Lodash 中编写了以下代码片段。

var result = _.omit(result.users, ['color']);

但它给了我以下内容 { ... }

如何实现如下输出?

[
        {
            color: "blue",
            users: [
                {
                    "name": "John",
                    "age": "29"
                },
                {
                    "name": "Neil",
                    "age": "34"
                }
            ]
        },
        {
            color: "green",
            users: [
                {
                    "name": "Ronn",
                    "age": "50"
                }
            ]
        }
    ]

您必须遍历数组并使用 omit

Arguments of omit is

1)对象:源对象。

2) [paths] (…(string|string[])): 要省略的 属性 路径。

Return value

(对象): Returns 新对象。

const clone = result.map((obj) => ({
    ...obj,
    users: obj.users.map((o) => _.omit(o, ["color"])),
}));

现场演示

您可以使用普通 JS 使用 map 轻松实现结果:

var result = [
  {
    color: "blue",
    users: [
      {
        name: "John",
        color: "blue",
        age: "29",
      },
      {
        name: "Neil",
        color: "blue",
        age: "34",
      },
    ],
  },
  {
    color: "green",
    users: [
      {
        name: "Ronn",
        color: "green",
        age: "50",
      },
    ],
  },
];

const res = result.map((obj) => ({ ...obj, users: obj.users.map(({ color, ...rest }) => rest)}));
console.log(res);