我有一个get请求,该请求在树中查找特定的ID,然后从该ID中拉回值。我需要遍历一系列这些获取请求,每个获取请求具有相似的ID(每个ID的值增加一个)。
我已经使用硬编码值创建了一个标准循环,但是我正在努力根据来自树的动态值来设置变量。
例如,我可以这样设置一个变量:
var cars = [entry.get('sub_menu.sub_menu_link.0.title'), entry.get('sub_menu.sub_menu_link.1.title'), entry.get('sub_menu.sub_menu_link.2.title')];
这将从树的这些区域中获取所有值。
但是我不知道会有多少,所以我不能用这种方式硬编码。我需要能够用一个循环替换这些值中的0、1和2,该循环添加一个新的get请求并每次增加"link."
和".title"
之间的整数。
预期结果是将尽可能多的get请求添加到它找到的变量中,并为每个请求增加整数,直到不再找到为止。
下面带有硬编码的get请求的完整示例代码(由于未拉入树,因此实际上不起作用。仅出于示例目的):
Query.fetch()
.then(function success(entry) {
var subMenu = [entry.get('sub_menu.sub_menu_link.0.title'), entry.get('sub_menu.sub_menu_link.1.title'), entry.get('sub_menu.sub_menu_link.2.title')];
var text = "";
var i;
for (i = 0; i < subMenu.length; i++) {
text += subMenu[i] + "<br>";
}
document.getElementById("subMenu-container").innerHTML = text;
},
function error(err) {
// err object
});
答案 0 :(得分:0)
我要回答的三个假设是:
entry.get
是同步的
entry.get
如果无法获得与我们传递的参数匹配的字符串,则返回null
或undefined
尽管您的代码使用的是Promise,但您希望将其保留为ES5级语言功能(不是ES2015 +)
查看嵌入式注释:
Query.fetch()
.then(function success(entry) {
// Loop getting titles until we run out of them, put them in `titles`
var titles = [];
var title;
while (true) { // Loop until `break;`
// Use string concat to include the value of `titles.length` (0, 1, ...) in the string
title = entry.get('sub_menu.sub_menu_link.' + titles.length + '.title');
if (title === null || title === undefined) {
break;
}
titles.push(title);
}
// Use `Array.prototype.join` to join the titles together with <br> in-between
document.getElementById("subMenu-container").innerHTML = titles.join("<br>");
}, function error(err) {
// Handle/report error
});