2013-01-05 1 views
2
나는 다음과 같은 데이터 구조를 수신하고

: 나는 내게 주어진에서 사용할 수있는 색상을 결정 할 수 있도록 객체 모델을 만들 수 있어야이 데이터에서자바 스크립트 데이터 모델, 상호 참조

{ 8: ['red', 'green', 'blue'] } 
{ 10: ['red', 'green'] } 
{ 12: ['green', 'blue'] } 

을 크기뿐 아니라 주어진 색상에 대해 사용할 수있는 크기가 반대입니다.

두 개의 데이터 세트를 만들 수 있고 조회를 수행하는 두 가지 기능이 있지만 UnderscoreJS와 같은 방식으로이 작업을 수행하는보다 우아한 방법이 있습니까?

+1

를 사용하는 가정. 각 행은 배열 요소입니까? 아니면 그들은 같은 물체의 3 가지 속성으로되어 있습니까? 또는...? – nnnnnn

+0

죄송합니다 위의 예와 같은 개체가있는 json 결과가 나타납니다. 배열을 가정합니다. – Neil

+0

두 개의 조회 객체로 객체를 파싱하는 것에 대해 세련되지 않은 것을 볼 수 없습니다. 그러나, 그것은 당신이 일해야만하는 매우 어색한 데이터 구조입니다. 원본 데이터를 제어 할 수 있습니까? 각각의 속성을 하나의 임의의 이름으로 구성된 객체 배열로 처리하는 것보다 문자열에서 파싱하는 것이 거의 간단합니다. – gilly3

답변

0

는 밑줄 또는 lodash 단일 JS 구조없는 현재의 형태에서 *

var a = [ 
    { 8: ['red', 'green', 'blue'] }, 
    { 10: ['red', 'green'] }, 
    { 12: ['green', 'blue'] } 
]; 
function getIndicesByColor(a,color){ 
    var list = _.assign.apply(this,a); 
    return _.select(_.keys(list),function(v,k,l){return _.contains(list[v],color)}) 
} 
getIndicesByColor(a,'red') // ["8", "10"] 
getIndicesByColor(a,'green') // ["8", "10", "12"]  
getIndicesByColor(a,'blue') // ["8", "12"] 
+0

하지만 어떻게 그 반대입니까? 파란색으로 사용할 수있는 크기를 확인하십시오! – Neil

+0

메신저 바보, 고칠 수있게 해줘서 고마워. – Shanimal