删除任何密钥时,为什么不可变映射顺序会更改?

时间:2017-10-12 04:21:50

标签: reactjs redux immutable.js

在React应用程序中使用Redutable与Redux时遇到问题。以下是我创建的示例代码:

const entry1 = {id: 1, name: 'Entry 1'}
const entry2 = {id: 2, name: 'Entry 2'}
const entry3 = {id: 3, name: 'Entry 3'}
const entry4 = {id: 4, name: 'Entry 4'}
const entry5 = {id: 5, name: 'Entry 5'}

const entries = Immutable.Map({1: entry1, 2: entry2, 3: entry3, 4: entry4, 5: entry5})
const updatedEntries = entries.delete('3')

// First Console Log
console.log(entries.valueSeq().toJS())

// Second Console Log
console.log(updatedEntries.valueSeq().toJS())

在我的第一个控制台日志中,订单是正确的:1,2,3,4,5。但是在我的第二个控制台日志中,订单混乱了,它变成了:1,2,5,4。

知道我的代码有什么问题吗?

1 个答案:

答案 0 :(得分:3)

Map不保证订单。如果您想保持相同的顺序,则应使用OrderedMap

  

<强> OrderedMap

     

一种Map,它可以保证条目的迭代顺序是它们的设置顺序()