迭代 JSON 只会带来最后的结果

Iterating over a JSON is bringing the last result only

我在 Google 警报中创建了一个警报,需要解析 XML。我正在使用 feed-reader 模块,我的代码如下:

app.get('/', (req, res) => {
  parse(url).then((rss) => {
    let title,
        link,
        publishedDate,
        contentSnippet = '';
    let json = {};

    rss['entries'].forEach((item) => {
      title = item.title;
      link = item.link.substring(42, item.link.indexOf('&ct='));
      publishedDate = item.publishedDate;
      contentSnippet = item.contentSnippet;
    });

    json = {
      title,
      link,
      publishedDate,
      contentSnippet
    };

    res.send(beautify(json, null, 2, 100));
  }).catch((err) => {
    res.send(err);
  });
});

我想遍历 "entries" 键中的内容。虽然有效,但结果只是最后一个

此外,如果我将 json 变量移动到循环内部,返回的结果是 [object Object],尽管长度正确。

我试过了JSON.stringify,没区别。

此表达式将最后一个条目的值分配给变量:

rss['entries'].forEach((item) => {
  title = item.title;
  link = item.link.substring(42, item.link.indexOf('&ct='));
  publishedDate = item.publishedDate;
  contentSnippet = item.contentSnippet;
});

然后根据最后的值创建 json

而是 Array#map 将条目放入新数组中。每次迭代应该return一个对象。

const arr = rss['entries'].map(({ title, link, publishedDate, contentSnippet }) => ({
  title,
  link: link.substring(42, link.indexOf('&ct=')),
  publishedDate,
  contentSnippet
}));