2017-02-24 106 views
0

我讓我的周圍lodash頭js和嘗試使用ID鍵選擇從該對象名稱「一」對象屬性:如何用lodash從json中獲取對象屬性?

{ 
    "one": { 
     "id":"peter", 
     "somevalue":1 
     }, 
    "two": { 
     "id":"john", 
     "somevalue":1 
    } 

} 

因此,作爲一個結果,我想:

{ 
    "id":"peter", 
    "somevalue":1 
} 

對不起,我更新了這個問題: 我該如何做到這一點lodash通過使用鍵,id ='peter'在這種情況下根據名稱返回此結果?

+2

爲什麼不直接使用普通的JavaScript'object.one'你訪問它? – ryeballar

+0

您*不*從JSON中獲取屬性,解析JSON然後從結果對象中獲取屬性。 – nnnnnn

+0

對不起,我更新了這個問題見上面 –

回答

1

隨着Lodash(#1):

const value = _.find(obj, prop => prop.id === 'peter'); 

隨着Lodash(#2):

const value = _.find(obj, {id: 'peter'}); 

隨着Lodash(#3):(信用到休斯)

const value = _.find(obj, 'id', 'peter'); 

Plain JS:

const key = Object.keys(obj).find(key => obj[key].id === 'peter'); 
const value obj[key]; 

未來JS:

const value = Object.values(obj).find(prop => prop.id === 'peter'); 
+0

我會指出第三個lodash選項沒有很好的記錄。如果你不需要一個複雜的謂詞對象或函數,你可以查詢一個確切的值:'_.find(obj,'id','peter')' – hughes

1

更多的文檔過濾器上的位置:https://lodash.com/docs#filter

var obj = { 
 
    "one": { 
 
     "id":"peter", 
 
     "somevalue":1 
 
     }, 
 
    "two": { 
 
     "id":"john", 
 
     "somevalue":1 
 
    } 
 

 
}; 
 

 
console.log(_.filter(obj, {id:"peter"}));
<script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js"></script>