在我的商店中,我有多个id列表,它们引用了规范化的实体。 它看起来像这样:
{
list1: [ 1 ],
list2: [],
//other lists
entities: {
1:{data},
...
}
}
用户可以编辑项目,并可以选择项目应该在哪个列表中。如果用户在编辑时更改了列表,我无法找到将项目从一个列表移动到另一个列表的优雅方式。 要移动项目,我必须从旧列表中删除item-id并将其添加到新列表中。
在将ID写入新列表后,如何从旧列表中删除ID?查看Id的每个列表,如果发现删除它似乎有点不对我。
修改
进一步解释我的用例: 可以有n个列表,例如日期,例如" 08-17-2016"其中的项目是事件。用户可以更改事件的日期,因此事件需要从一个日期移动到另一个日期。
答案 0 :(得分:0)
Array.prototype.filter
并与Array.prototype.indexOf
一起检查此ID存在于哪个列表中:function moveOrAdd(idToMove, list) {
if (list.indexOf(idToMove) > -1) {
// idToMove was in list so remove
return list.filter(id => id !== idToMove);
} else {
// idToMove wasn't in list so add it
return [...list, idToMove];
}
}
// your store then, assuming an array of id to move or delete
[1, 2, 3 ... 2000].forEach(
index => {
{
list1: [...moveOrAdd(index, list1)],
list2: [...moveOrAdd(index, list2)],
/// etc...
}
}
);