迭代 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
}));
我在 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
}));