我有一个对象列表,这些对象代表折线图中的点,随着数据的获取而增长,并且可以超过 20,000(两万)个对象。
但是图表一次只能显示 1000 个点,为此我做了以下功能:
private pointPush(model: ViewModel, data: Point[]) {
model.values.push(...data);
if (model.values.length > 1000) {
model.values.splice(0, model.values.length - 1000);
}
}
但我意识到当它超过 1000 点时会变得非常慢,因为我认为该splice
函数在内部创建了一个新数组。
您可以执行类似于具有恒定大小的缓冲区环的操作,但数据访问指针将随着新数据的添加覆盖旧数据而旋转。
记住我正在使用带有 nativescript-ui 的 ObservableArray。