gpt4 book ai didi

javascript - 迭代具有未知名称的 javascript 子对象

转载 作者:行者123 更新时间:2023-12-02 13:58:42 25 4
gpt4 key购买 nike

我正在使用 javascript 解析 RSS 新闻..返回的对象(来自 Yahoo YQL)在 news 对象中包含新闻。

通常,它位于该子对象内:

news.results.item

所以我通常会使用以下方式进行迭代:

news.results.item.forEach

现在,当我加载多个源时,它会变得有趣......它可以返回类似的内容

news.results.item (array[10])
news.results.entry (array[10])
news.results.banana (array[10])

我的问题是,当我不知道将返回的命名时,如何迭代这些条目。有没有一种简单的方法来合并它们? (使用 jQuery 就可以了)

最佳答案

您可以循环访问 news.results 上的所有数组属性:

var news = {
results: {
item: ["a", "b", "c"],
entry: ["d", "e", "f"],
banana: ["g", "h", "i"]
}
};
Object.keys(news.results).forEach(function(key) {
var value = news.results[key];
if (Array.isArray(value)) {
value.forEach(function(entry) {
console.log(entry);
});
}
});

如果您正在寻找特定的内容并希望在找到它时停止,您可以使用 some 而不是 forEach 或执行嵌套的 find (对于某些浏览器,您仍然需要 find polyfill)。

但是,如果您想要在搜索之前将它们组合起来,那很容易做到:

var news = {
results: {
item: ["a", "b", "c"],
entry: ["d", "e", "f"],
banana: ["g", "h", "i"]
}
};
var all = [];
Object.keys(news.results).forEach(function(key) {
var value = news.results[key];
if (Array.isArray(value)) {
all.push.apply(all, value);
}
});
all.forEach(function(entry) {
console.log(entry);
});

(有些人会为此使用 reduce 。我认为在这种累积值实际上从未改变的情况下,它会模糊而不是帮助阅读。)

关于javascript - 迭代具有未知名称的 javascript 子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40533698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com