2017-02-24 4 views
0
내가 JS에 대한 lodash 주위에 내 머리를 가져오고 ID 키를 사용하여이 개체의 이름을 '하나'와 객체 속성을 선택하려고

:lodash로 json에서 객체 속성을 가져 오는 방법은 무엇입니까?

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

} 

그래서 그 결과로 내가 좋아하는 것 :

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

죄송합니다. 키를 사용하여 '1'이라는 이름으로이 결과를 반환하는 lodash로이 작업을 수행하려면 어떻게해야합니까?

+2

왜 당신이 직접 일반 자바 스크립트'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'); 

일반 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>