2017-03-25 13 views
0

임에 위치에 따라 키를 검색하는 방법 :ImmutableJs - 내 상태 개체는 다음과 같습니다 <a href="https://facebook.github.io/immutable-js" rel="nofollow noreferrer">immutableJs</a></p> <p>사용하여지도

export const initialToolbarState = Map({ 
    temSelectionCtrl : Map({ 
     temSelect : true, 
    }), 
    functionalCtrl : Map({ 
     addEle : true, 
     grpSelect : true, 
     drawShape : true 
    }), 
    operationalCtrl : Map({ 
     zoomIn : true, 
     zoomOut : true, 
     pan : true, 
     temSide : true 
    }), 
    referenceCtrl : Map({ 
     saveCtrl : true 
    }) 
}); 

그래서 boolean 값이 키 객체가 있습니다.

이 객체들 위에이 루프를 매핑하고 싶습니다. &은 keys입니다. boolean 값은 key을 렌더링할지 여부를 알려줍니다. 변경 불가능한 경우 맞춤 map 기능을 사용하여 Map에 매핑 할 수 있습니다. 그래서 다음 작품은, 그러나 아닙니다으로 : immutableJs를 사용

// map over the initialToolbarState Map object 
let ctrls = initialToolbarState.map((eachToolbar) => { 
    // map over the child Map objects like temSelectionCtrl, functionalCtrl, operationalCtrl etc 
    return eachToolbar.map((eachCtrl, i) => { 
    // get the key corresponding to 'eachCtrl' value 
    let propKey = eachToolbar.keyOf(eachCtrl); 
     // propKey is always the first property (1st prop) of 'eachToolbar' 
     console.log(propKey); 
... 

의 currect 루프 내에서 'eachCtrl'값에 대응하는 올바른 key을 얻을 수있는 방법이 있나요? 이 key과 일치 할 올바른 value을 가리킬 수 있도록 도와 줄 수 있습니까?

답변

1

다시 .map을 개체에 사용할 수 있습니다.

initialToolbarState.map((eachToolbar) => { 
    eachToolbar.map((value, key) => { 
    console.log(key, ' ==> ', value); 
    }); 
}); 

가 기록합니다 :

temSelect ==> true 
addEle ==> true 
grpSelect ==> true 
drawShape ==> true 
// etc… 

지금 바로 데이터 구조를 만들려면 수익을 체인 두 번째 인수는 전체 인수 서명 그래서,이 조각

(mapper (value: V, key: K, iter: this)) 인으로, 열쇠이다 당신이 필요로하거나 당신의 열쇠로 무엇이든 할 수 있습니다.

"지도 맵"이 문제 해결에 가장 적합한 구조인지 다시 생각해보십시오. 아마도 반복적으로 반복해야한다면 "지도 목록"이 더 좋습니다. 개별 항목에 대한 즉각적인 읽기/업데이트는 없지만 목록이 두 개 항목으로 구성된 경우 성능에 영향을 미치지 않습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 그 구조가 충분히 유연하다고 생각하지 않기 때문에 구조 조정을 끝내었다. 다시 한 번 감사드립니다! – Kayote

관련 문제