如何将json/object转换为数组进行循环
How to convert json/object to array for looping
我有一个javascript应用程序,调用api, api返回json。对于json,我选择一个特定的对象,并循环遍历它。
我的代码流是这样的:服务调用-> GetResults循环遍历Results并构建Page
问题虽然,有时api只返回一个结果,所以这意味着它返回一个对象而不是数组,所以我不能通过结果循环。最好的解决办法是什么?
我应该转换我的对象,或单个结果到一个数组吗?放入/推入数组?还是应该执行typeof检查元素是否为数组,然后循环?
谢谢你的帮助。
//this is what is return when there are more than one results
var results = {
pages: [
{"pageNumber":204},
{"pageNumber":1024},
{"pageNumber":3012}
]
}
//this is what is returned when there is only one result
var results = {
pages: {"pageNumber": 105}
}
我的代码循环结果,只是使用一个for循环,但它会产生错误,因为有时结果不是一个数组。还是那句话,我要检查它是不是一个数组吗?推结果到一个新的数组?什么会更好。由于
如果您无法控制服务器端,您可以做一个简单的检查,以确保它是一个数组:
if (!(results.pages instanceof Array)) {
results.pages = [results.pages];
}
// Do your loop here.
否则,理想情况下这应该发生在服务器上;它应该是契约的一部分,结果总是可以以类似的方式访问。
无论你对循环中的对象做了什么,都将其安排到一个单独的过程中,如果你发现对象不是数组,则直接对其应用该过程,否则,对该对象的每个元素多次应用该过程:
function processPage(page) { /* do something to your page */ }
if (pages instanceof Array) pages.forEach(processPage);
else processPage(pages);
与创建冗余数组的方法相比,这种方法的明显好处是,您不创建冗余数组,也不修改接收到的数据。虽然在这个阶段,数据是否完整可能并不重要,但通常在运行集成和回归测试时,它可能会给您带来更多麻烦。
相关文章:
- javascript:数组循环
- 如何将数组循环到JSON代码中
- 而与数组循环
- JavaScript 数组/循环不起作用
- AJAX在数组循环中调用,只在上一次完成后调用next
- 数组循环以获取单个值
- JavaScript数组循环
- Javascript 2D数组循环停止
- 通过Javascript中的JSON数组循环
- 为什么以下 forEach 数组循环未返回未定义
- 如何在数组循环中过滤数据
- 如何在数组循环 222 中过滤数据
- 数组循环以确定范围平均值
- 对象的数组循环
- 对象键及其值的数组循环
- 虽然的缺点!未定义的数组循环
- 数组循环导致无限循环
- 数组循环 - 处理下拉列表中的空值
- 在 Node 中连接数组循环.js glob 结果
- JavaScript 图像数组循环