stack_html += "<div class='co-stack-layer-title'>Application and Data" +
"<div class='row'>" +
response['Application and Data'].forEach(generateStackItem) +
"</div>" +
"</div>";
stack_html += "<div class='co-stack-layer-title'>Business Tools" +
"<div class='row'>" +
response['Business Tools'].forEach(generateStackItem) +
"</div>" +
"</div>";
stack_html += "<div class='co-stack-layer-title'>DevOps" +
"<div class='row'>" +
response['DevOps'].forEach(generateStackItem) +
"</div>" +
"</div>";
stack_html += "<div class='co-stack-layer-title'>Utilities" +
"<div class='row'>" +
response['Utilities'].forEach(generateStackItem) +
"</div>" +
"</div>";
function generateStackItem(element, index, array) {
var stack_item_html = "";
stack_item_html += "<div class='co-service'>" +
"<a href='" + element['canonical_url'] + "' class='each-service hint hint--top' data-hint='" + element['name'] + "' data-align='left'>" +
"<img src='" + element['image_url'] + "'>" +
"</a>" +
"</div>";
console.log(stack_item_html);
return stack_item_html;
}
我正在尝试对javascript对象使用forEach
迭代,似乎我无法将返回值插入到字符串添加中。
<div class='co-stack-layer-title'>Application and Data<div class='row'>undefined</div></div><div class='co-stack-layer-title'>Business Tools<div class='row'>undefined</div></div><div class='co-stack-layer-title'>DevOps<div class='row'>undefined</div></div><div class='co-stack-layer-title'>Utilities<div class='row'>undefined</div></div>
答案 0 :(得分:3)
forEach
返回undefined
。使用map
+ join
。
"abc" + response['Utilities'].map(generateStackItem).join("") + "def";
答案 1 :(得分:0)
当您的数组为空时,forEach
函数将返回undefined
,当您undefined
调用forEach
时,egyou将获得[].forEach(generateStackItem)
,所以检查你的response['Application and Data']
是否为空数组。
答案 2 :(得分:0)
来自mozilla
forEach()对每个数组元素执行一次回调函数; 与map()或reduce()不同,它始终返回未定义的值,并且 不可链接。典型的用例是在 链的末端。
以这种方式在forEach内部使用return是一个常见的错误,但无法正常工作。您可能需要查看map