2017-02-24 45 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>