我有一个应用程序,我可以从我的服务器获取一些数据并将其保存在一个数组中。当我显示它时,我想分页显示它,所以我决定每页有 50 个项目。
我想实现刷新功能,以便刷新当前查看的页面。例如,如果我已经加载了 3 个页面,这意味着我的数组中有 150 个项目,我刷新第 2 页(这意味着我从我的服务器获取项目 50-99)我想用新的替换当前项目项目。
基本上我想做的是删除当前数组中的第 50-99 项,并从索引 50 开始向当前数组插入"new"50 项。
我尝试这样做:
// remove the items
items.splice((this.currentPage*50 -50), 50)
// add the new freshly grabbed items instead
Array.prototype.splice.apply(
items,
[(this.currentPage*50 -1), data.data.length].concat(data.data));
但它似乎确实有点问题。如果我只加载了一页,那么它会按预期工作。它删除所有 50 个项目并用新项目替换它们。但是,如果我加载了 2 个页面并尝试刷新第 1 页,我会突然看到当前项目数组的长度是 99 而不是 100。我试过玩这个但我就是无法让它工作:/
知道如何根据当前刷新的页面有效地从我的数组中删除一组项目,并将删除的项目替换为包含新项目的新数组吗?
最佳答案
我想,你不需要这个。
// remove the items
items.splice((this.currentPage*50 -50), 50)
否则你需要为这样的长度实现一个0
:
// add the new freshly grabbed items instead
Array.prototype.splice.apply(
items,
[(this.currentPage - 1) * 50, 0].concat(data.data));
// ^
最好的办法是像这样一步完成:
var a = Array.apply(null, { length: 150 }).map(function (_, i) { return i; }),
b = Array.apply(null, { length: 50 }).map(function (_, i) { return i + 1050; });
Array.prototype.splice.apply(a, [50, b.length].concat(b));
document.write('<pre>' + JSON.stringify(a, 0, 4) + '</pre>');
关于Javascript:用另一组项目替换数组中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33465559/