【问题标题】:How can I convert a subset of properties to an array of key-value pairs?如何将属性子集转换为键值对数组?
【发布时间】:2017-09-03 08:48:21
【问题描述】:

假设我有以下对象:

"MyObject": {
  "Foo": "b",
  "Bar": "d",
  "NewEngland": "12",
  "GreenBay": "12",
  "NewYork": "10",
  "Seattle": "3"
}

如何将其转换为:

[{
  name: 'New England', value: 12
}, {
  name: 'Green Bay', value: 12
}, {
  name: 'New York', value: 10
}, {
  name: 'Seattle', value: 3
}]

?

请注意,我删除了 FooBar 属性。

理想情况下,我想使用 ES6 或 lodash。

【问题讨论】:

    标签: json ecmascript-6 lodash


    【解决方案1】:

    这个怎么样?

    _(MyObject).omit(['Foo', 'Bar']).map((value, name) => ({ name, value })).value()

    您将使用 lodash 链接,首先使用 omit 取出键在该数组中的对象中的键值对,然后您将使用 map 从每个键创建一个对象 { name: 'GreenBay', value: '12' } -值对。

    【讨论】:

      【解决方案2】:

      一个 ES6 解决方案是使用 Set:

      let object = {
        "Foo": "b",
        "Bar": "d",
        "NewEngland": "12",
        "GreenBay": "12",
        "NewYork": "10",
        "Seattle": "3"
      }
      
      let keys = new Set(Object.keys(object))
      
      keys.delete('Foo')
      keys.delete('Bar')
      
      let result = [...keys].map(k => ({name: k, value: object[k]}))
      
      console.log(result)

      【讨论】:

      • 我很不解这里使用set的目的是什么。
      • 如果您有要省略的n 属性列表,Set 允许您在线性时间内完成,而不是二次。
      猜你喜欢
      • 2013-01-14
      • 2020-01-06
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 2012-09-26
      • 2019-01-14
      • 2019-12-02
      相关资源
      最近更新 更多