如何将属性子集转换为键值对数组?

时间:2017-04-07 21:05:10

标签: json ecmascript-6 lodash

想象一下,我有以下对象:

"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。

2 个答案:

答案 0 :(得分:2)

这个怎么样?

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

您正在使用lodash链接,首先使用省略来取出其键位于该数组中的对象中的键值对,然后您将使用map创建对象{{1来自每个键值对。

答案 1 :(得分:1)

一个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)