2017-12-29 20 views
0

드래그 앤 드롭 목록 기능을 채우는 불변의 목록이 있습니다. 목록 항목을 통해 매핑 할 때 해당 인덱스를 제외하고 목록 항목에 ID가 없습니다. dragEnd에인덱스 배열에서 immutable.js리스트 재정렬

const list = Immutable.List([{"alias":"cat"},{"alias":"dog"},{"alias":"rat"}]) 

는 이벤트 나에게 목록의 새로운 질서의 배열을 제공하지만, 나에게 정말 옆으로 이전 주문의 인덱스를 참조에서, 목록 항목을 식별하기 위해 아무것도 제공하지 않습니다.

const newOrder = [{"order":1},{"order":0},{"order":2}] 

나는 내 가게를 업데이트하려면 다음 인덱스를 기반으로 새로운 재 주문 불변의 데이터 목록을 파견해야하지만이 작업을 수행 할 수있는 웅변하고 간결한 방법을 찾고 있습니다. 아마도 sortBy를 사용하거나 orderedMap을 첫 번째 목록에서 작성하고 newOrder 배열에서 orderedList를 작성하는 방법을 생각했을 것입니다. 좋은 해결책 인 것처럼 보이는 어떤 것도 얻을 수 없었습니다. 파견에

필요 :

const orderedList = Immutable.List([{"alias":"dog"},{"alias":"cat"},{"alias":"rat"}]) 

어떻게이 작업을 수행하는 가장 좋은 방법이 있을까요?

답변

1

은 당신이지도를 사용할 수 있다고 생각 :

const newOrder = [{"order":1},{"order":0},{"order":2}]; 
 

 
const ordered = 
 
Immutable.List([1,2,3]) 
 
    .map(
 
    (item,index,all)=> 
 
     all.get(newOrder[index].order) 
 
    ); 
 

 
console.log(
 
    JSON.stringify(
 
    ordered.toArray(), 
 
    undefined, 
 
    2 
 
) 
 
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.min.js"></script>

+1

감사 HMR, 이것은 나를 위해 작동합니다. 나는 그것을 복잡하게 끝내었다라고 생각한다! 도와 줘서 고마워! –