我有多维数组,我希望它具有不可变性。但是我仍然不太确定我应该如何使用多维不可变对象。
让我们说我的结构与此类似:
// data
{
// item
{
name: someName,
todos: [
{ id: 1, name: todoName },
{ id: 2, name: todoName2 }
]
}
}
如何提取唯一的待办事项清单?
// Saving todos
let uniqueTodos = []
// Saving ids of todos
let saved = []
// I want to make data immutable list
data.forEach(item => {
item.todos.forEach(todo => {
if (saved.indexOf(todo.id) === -1) {
saved.push(todo.id)
todos.push(todo)
}
})
})
return todos
答案 0 :(得分:4)
我相信你混淆了两个相关的概念:immutability - 一种可以在JS vs Immutable.js中使用的技术 - 一个使前者容易使用的库。
以下是两者的示例(数据集有点纠正为有效JS并包含重复的待办事项):
const data = {
item: {
name: 'someName',
todos: [
{ id: 1, name: 'todoName' },
{ id: 2, name: 'todoName2' },
{ id: 2, name: 'todoName2' },
],
},
}
console.info(
'immutable unique todos:',
data.item.todos.map((todo) => ({ ...todo, }))
)
console.info(
'Immutable.js unique todos:',
Immutable.fromJS(data).getIn(['item', 'todos']).toSet().toJS()
)
<script src="https://cdn.jsdelivr.net/immutable.js/3.8.1/immutable.min.js"></script>
Immutable.js docs。