仅将数组的最后一个元素添加到现有数组

时间:2019-02-05 04:52:27

标签: javascript arrays angular ionic-framework

我有一个现有数组,在滚动时,我试图向其中添加更多元素。

我正在使用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添加到现有数组中。

谢谢您的任何建议!

2 个答案:

答案 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);
        ...