Javascript forEach返回值插入到字符串中

时间:2015-10-22 15:56:27

标签: javascript json object foreach

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>

3 个答案:

答案 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