【发布时间】:2021-02-02 13:42:00
【问题描述】:
我目前正在使用 Vue3 开发一款带有自上而下地图和单位的游戏。我有一个单位商店,我将所有单位对象保存在一个数组中,每个单位都根据其坐标放置在地图上。 我的商店中有一种方法可以检索同一坐标上的所有单位:
public getUnitsAt(coordinates: Coordinates): Array<Unit> {
return this.state.units.filter((unit) => unit.coordinates.x === coordinates.x && unit.coordinates.y === coordinates.y);
}
在大多数情况下,这足以在列表中显示这些单位。现在我介绍了带有自己的城镇视图组件的城镇,我想显示城镇“外部”的单位,但仍然在相同的坐标上。所以我用这个:
const outsideUnits = computed(() => unitStore.getUnitsAt(town.coordinates));
到目前为止一切顺利,但现在我希望能够通过告诉特定单元移动到前面来对这些外部单元进行排序。问题是这个数组已经是来自商店的过滤数组副本。所以我可能可以对这个计算属性进行排序,但是一旦将另一个单元添加到存储中,它就会重新计算并且我的订单丢失了。任何想法如何我仍然可以拥有最新的单位数组,但能够进行排序?
如果一个单位从附近的场地移动到同一场地,它应该自动在前面。
【问题讨论】:
-
你能澄清一下你所说的排在前面是什么意思,你的意思是排在第一位吗?您是否还担心内存或 CPU 效率低下?
-
@Daniel 是的,在索引 0 处,所以我会取消新项目。记忆只是一个小问题。只要我使用对象作为条目排序应该只对引用而不是整个对象进行排序。
标签: vuejs3