2016-06-23 3 views
2

그래서 나는 불변의 JS지도가 :불변 JS지도에서 키를 업데이트

{ 
    new title: "item 1", 
    title2: "item 2", 
    title3: "item 3" 
} 

을 지금까지 update()set()와 함께 :이 될 것입니다, 그래서 내가 열쇠를 업데이트 할

{ 
title: "item 1", 
title2: "item 2", 
title3: "item 3" 
} 

을 값만 업데이트 할 수 있습니까? 키를 업데이트 할 수 있습니까? 또는 키를 업데이트하기 전에 키를 변환해야합니까? 같은

답변

10

사용할 수 mapKeys는 :

var map = Immutable.Map({ 
    new title: "item 1", 
    title2: "item 2", 
    title3: "item 3" 
}); 

map = map.mapKeys(k => { 
    if (k === "title1") 
    return "newTitle"; 
    return k; 
}); 
+1

완벽한을 사용하는 것입니다! 매력을 느껴보십시오 –

+1

당신은 환영합니다 :) – erdysson

3

또 다른, 더 직접적인, 접근 방식은 delete

var map = Immutable.Map({ 
    title: "item 1", 
    title2: "item 2", 
    title3: "item 3" 
}); 

map = map.set('new title', "item 1") 
    .delete('title'); 

또는

map = map.set('new title', map.get('title')) 
    .delete('title'); 
+1

이 답변은 아마도 더 빠르며지도의 모든 키를 넘을 필요가 없습니다. 예 : https://jsperf.com/immutable-map-change-key/1. – ariels

+1

더 자세히 설명해 드리겠습니다 :'Map.mapKeys'는 게이가 될 수 없습니다.'get'은 원래 맵의 _every_ 키를 반복해야하기 때문입니다. – ariels

관련 문제