首页 > 解决方案 > JavaScript:按键选择旧数组并重命名新数组中的键

问题描述

我有一个对象数组,我想从 key 的值中“挑选”一个新数组viewerId。我还想将viewerId密钥的名称更改为userId. 这是我对 lodash 所做的:

const viewerList = [{
    "id": 1,
    "viewerId": 5,
    "status": true
  },
  {
    "id": 2,
    "viewerId": 8,
    "status": true
  },
  {
    "id": 3,
    "viewerId": 6,
    "status": true
  },
  {
    "id": 4,
    "viewerId": 9,
    "status": true
  }
]

var result = []
_.each(viewerList, (o) => {
  result.push(_.pick(o, 'viewerId'))
})

result = result.map(function(item) {
  return {
    userId: item.viewerId
  }
});

console.log(result)
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>

我分两步执行此操作。这可以优化吗?

标签: javascriptarrayslodasheach

解决方案


您可以在单个语句中执行以下操作:

const viewerList = [{
    "id": 1,
    "viewerId": 5,
    "status": true
  },
  {
    "id": 2,
    "viewerId": 8,
    "status": true
  },
  {
    "id": 3,
    "viewerId": 6,
    "status": true
  },
  {
    "id": 4,
    "viewerId": 9,
    "status": true
  }
]

// The same logic in a single statement
var result = viewerList.map(function(item) {
    return { userId : item.viewerId}
})

console.log(result)

这适用于所有浏览器 ie9 及更高版本。有关.map()正在使用的功能的更多信息,请参阅此


推荐阅读