2017-12-29 24 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、これは私のために動作します。私はそれを複雑にしていたと思う!ご協力ありがとうございました! –

関連する問題