【问题标题】:How to pick elements by array from array of object如何从对象数组中按数组选择元素
【发布时间】:2018-11-11 12:05:27
【问题描述】:

我有一个对象数组,我想删除一些这样的元素。

var data = [{a:1, b:2, c:3, d:4}, {a:11, b:22, c:33, d:44}]
var saveByKeys = ['a', 'c']

我想要的结果是:

var reuslt = [{a:1, c:3}, {a:11, c:33}]

如何使用 lodash 来做到这一点?单线会更好

【问题讨论】:

标签: javascript functional-programming lodash


【解决方案1】:

您可以使用 lodash 的 _.pick()Array.map()(或 lodash 的 _.map()):

const data = [{a:1, b:2, c:3, d:4}, {a:11, b:22, c:33, d:44}]
const saveByKeys = ['a', 'c']

const result = data.map(o => _.pick(o, saveByKeys))

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

【讨论】:

    【解决方案2】:

    如果你想避免lodash,这就是 ES6 的样子:

    var data = [{a:1, b:2, c:3, d:4}, {a:11, b:22, c:33, d:44}]
    var keys = ['a', 'c']
    
    const pick = (obj, keys) => keys.reduce((r,c) => (r[c] = obj[c], r),{})
    console.log(data.map(x => pick(x, keys)))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-22
      • 1970-01-01
      • 2021-03-03
      • 2017-08-30
      相关资源
      最近更新 更多