Javascript 将一个数组转换为另一个数组

Javascript 将一个数组转换为另一个数组,javascript,lodash,Javascript,Lodash,我想使用lodash 2.4.2将此数组转换为另一个数组: 权限将映射到角色中。我们不接触其他属性 发件人: 到这个数组 { "items": [ { "_id": "admin", "roles": [ "ROLE_ADMIN" ] }, { "_id": "user", "role": [

我想使用lodash 2.4.2将此数组转换为另一个数组:

权限将映射到角色中。我们不接触其他属性

发件人:

到这个数组

    {

    "items": [
        {
          "_id": "admin",
          "roles": [

              "ROLE_ADMIN"

          ]
        },
        {
          "_id": "user",
          "role": [

              "ROLE_USER"

          ]
        }
      ]
    }
你能帮我吗?

如前所述,在以后的帖子中,你必须提供你为解决问题而编写的代码示例

以下是解决方案,非常简单:

const initialObject = {
  "items": [
    {
      "_id": "admin",
      "authorities": [
        {
          "name": "ROLE_ADMIN"
        }
      ]
    }, 
    {
      "_id": "user",
      "authorities": [
        {
          "name": "ROLE_USER"
        }
      ]
    }
  ]
}

const processedObject = _
  .map(initialObject.items, item => {
    return {
      _id: item._id,
      roles: _.map(item.authorities, a => a.name)
    }
  })

这只是密钥名称的重新映射。出于性能原因,我会尽量避免使用
delete
。您可以看到其中的性能差异,仅当对象稍后被持久化时才使用“delete”

for (var item of items) {
  item.roles =  item.authorities
  // possible but slow
  // delete item.authorities
  item.authorities = undefined
}
编辑:@vanelizarov代码甚至更好,如果你想避免对象本身的变异并清理属性。但速度也较慢

vanelizarov code:   x 5,025,370 ops/sec ±1.30% (90 runs sampled)
my code:            x 31,583,811 ops/sec ±0.95% (92 runs sampled)

Stackoverflow不是免费的代码编写服务。展示你的尝试。这里的目标是帮助您修复代码
vanelizarov code:   x 5,025,370 ops/sec ±1.30% (90 runs sampled)
my code:            x 31,583,811 ops/sec ±0.95% (92 runs sampled)