2016-10-18 5 views
0

underscore.js를 사용하여 JSON을 필터링해야하는 유스 케이스가 있습니다. 예 :Underscore.js를 사용하여 json 필터링 및 병합

{"test":{ 
{ key: 1,country:USA,product:A,price:200} 
{key: 1,country:USA,product:B,price:200} 
{key: 1,country:UK,product:B,price:300} 
} 
} 

동일한 키에 대해 여러 치수가 있습니다. 나는 내가 미국

{"test":{ 
{ key: 1,country:USA,price:400} 
} 
} 

를 필터링 할 때 다음과 같은 출력을 얻을 필요가 나는 제품 B를 필터링 할 때

{"test":{ 
{ key: 1,product:B,price:500} 
} 
} 

나는 나는 그것이 빠른 생각으로이 사용 underscore.js을 구현하고 싶습니다 순수 JS 옵션에 비해

+0

'국가'또는 '제품'으로 필터링 할 수 있습니까? 아니면 동시에 할 수 있습니까? –

+0

안녕 Vivek, 제품별로 필터링 할 수 있습니다. 아이디어는 필터링 후 각 측정 기준에 대해 집계 된 가격을 얻는 것입니다. 감사. –

+0

"JSON"이란 무엇이며 JSON이 문제를 처리해야하는 이유는 일반적인 JavaScript 객체 인 것 같습니다. –

답변

0

먼저 _.filter 밑줄을 사용하여 제품 또는 국가와 같은 기준으로 검색을 적용하십시오.

그런 다음 _each 함수를 사용하여 필터의 결과를 기반으로 집계를 수행하십시오.

마지막으로 _map 함수에서 결과를 조작 할 수 있습니다.

나는 그것이 내가이 도움을 희망하고있어 당신에게

jsfiddle.net/zusquang/39os1854/ 

도움이 될 수도, 여기 jsfiddle 링크를 기록했다.

+0

안녕 Quang, 바이올린 주셔서 감사합니다! 이것은 내가 찾고 있었던 바로 그 것이다. –

0

난 당신이 오타했다 있으리라 믿고있어 테스트가 객체의 배열을 포함

var filtered = JSON.parse(jsonString).test.filter(function(item) { return item.country == 'USA' }); 
var total = 0; 

filtered.forEach(function(item) { 
    total += item.price 
}); 

속도에 대해 걱정하지 마십시오,이 방법은 사용하지 않는 것이 좋습니다 마이크로 최적화 될 것이다.