2017-04-07 73 views
-2

想象一下,我有以下對象:如何將一組屬性轉換爲一組鍵值對?

"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

這個怎麼樣?

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

你會使用lodash鏈接,先用不採取出它的鍵是該數組中的對象的鍵值對,那麼你可以使用地圖創建一個對象{ name: 'GreenBay', value: '12' }來自每個鍵值對。

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)

+0

我通過什麼樣的使用在這裏設置的目的是不解。 – 2017-04-09 13:13:05

+0

如果你有一個'n'屬性的列表可以省略,'Set'可以讓你在線性時間內而不是二次的。 – gyre

相關問題