我有一个现有数组,在滚动时,我试图向其中添加更多元素。
我正在使用rss2json将rss供稿转换为json。
ngOnInit() {
this.getRssFeed(); // returns 4 items
}
这是我添加更多项目的方式:
this.count++;
this.podcastService.getRssFeed(this.rssUrl, this.count)
.then(data => {
if (data) {
for (const episodes of data.items) {
this.episodes.push(episodes); // returns 5 items
// const episode = this.episodes[episodes.length - 1]
}
event.target.complete();
console.log(data);
...
计数正确增加。但是每次调用getRssFeed
时都会返回整个数组。每次具有正确的长度。
我不确定如何pop
除最后一个以外的所有返回数组元素。
我也尝试过类似的尝试,仅push()
仅返回最后一个数组元素。还是没有运气。
const episode = this.episodes[episodes.length - 1]
例如,如果在初始负载下我得到:
[foo, bar]
滚动时,我会回来:
[foo, bar, baz]
我只想将baz
添加到现有数组中。
谢谢您的任何建议!
答案 0 :(得分:1)
您可以尝试的一种解决方案是更改下一部分代码:
if (data)
{
for (const episodes of data.items)
{
this.episodes.push(episodes); // returns 5 items
// const episode = this.episodes[episodes.length - 1]
}
...
}
通过这个:
if (data)
{
let lastEpisode = data.items.pop();
this.episodes.push(lastEpisode);
...
}
这里,pop()
用于从data.items
数组中删除最后一个元素并返回该元素,我们将其保存在变量lastEpisode
中,最后将其压入您的{{1 }}数组。不会更改episodes
数组的另一种解决方案可能是:
data.items
答案 1 :(得分:0)
据我了解,您只想将getRssFeed
服务返回的最新项目添加到episodes
列表中。您可以使用Array spread语法来更新getRssFeed
服务的每次调用中的剧集列表。
您可以更新该函数以使其看起来像这样:
this.count++;
this.podcastService.getRssFeed(this.rssUrl, this.count)
.then(data => {
if (data) {
this.episodes = [
// This keeps the previous episodes
...this.episodes,
// This adds the last item returned to the array
data.items[data.items.length -1],
]
}
event.target.complete();
console.log(data);
...