如何使用for循环返回?

时间:2015-11-30 16:30:05

标签: javascript

我有一个for循环函数,循环遍历一个对象数组。我想要的是返回输出,清除变量outputHTML,但return函数执行循环过程,因此它只返回一次。我该如何重复这个过程?



for (var i = 0; i < data.media.length; i++) {

  if (data.media[i].image != undefined) {

    outputHTML = '<div class="image">';

    // for (var j = 0; j < data.media[i].image.length; j++) {
    // console.log(data.images[i]);

    // Extract filename
    var url = data.media[i].image.src;
    var filename = url.substring(url.lastIndexOf('/') + 1, url.lastIndexOf('.'));
    // console.log(filename);

    outputHTML += '<img src="' + url + '" alt="' + filename + '" />';
    // $("body").append(outputHTML);

    // };

    outputHTML += '</div>';

    return outputHTML;

  } else {
    // If image doesn't exists return empty string
    return '';
  }

};
&#13;
&#13;
&#13;

5 个答案:

答案 0 :(得分:3)

为什么不在循环结束时只有return

for (var i = 0; i < data.media.length; i++) {
    ...
};
return outputHTML;

答案 1 :(得分:0)

var outputHTML = '';
for (var i = 0; i < data.media.length; i++) {

                if (data.media[i].image != undefined) {

                    outputHTML += '<div class="image">';

                    // for (var j = 0; j < data.media[i].image.length; j++) {
                        // console.log(data.images[i]);

                        // Extract filename
                        var url = data.media[i].image.src;
                        var filename = url.substring( url.lastIndexOf('/') + 1, url.lastIndexOf('.') );
                        // console.log(filename);

                        outputHTML += '<img src="' + url + '" alt="' + filename + '" />';
                        // $("body").append(outputHTML);

                    // };

                    outputHTML +='</div>';



                } 

            };
return outputHTML;

答案 2 :(得分:0)

你有一个你告诉要返回的功能。人们会期望它离开这个功能。也许您想将所有结果组合在一起?在这种情况下,由您决定如何组合它们。例如通过连接?

答案 3 :(得分:0)

你可以在for循环中构建outputHTML变量 - 然后在循环完成后返回变量 - 或者你可以从函数中删除for循环并在for循环中调用它。我认为第一种选择最有意义:

function GetOutputHTML(data){

    var outputHTML = "";

    for (var i = 0; i < data.media.length; i++) {


                    if (data.media[i].image != undefined) {

                        outputHTML += '<div class="image">';

                        // for (var j = 0; j < data.media[i].image.length; j++) {
                            // console.log(data.images[i]);

                            // Extract filename
                            var url = data.media[i].image.src;
                            var filename = url.substring( url.lastIndexOf('/') + 1, url.lastIndexOf('.') );
                            // console.log(filename);

                            outputHTML += '<img src="' + url + '" alt="' + filename + '" />';
                            // $("body").append(outputHTML);

                        // };

                        outputHTML +='</div>';

                    }     
                };
        return outputHTML;
}

答案 4 :(得分:0)

由于var html = data.media.map(function(item, index) { if (item.image != undefined) { var outputHTML = '<div class="image">'; var url = item.image.src; var filename = url.substring( url.lastIndexOf('/') + 1, url.lastIndexOf('.') ); outputHTML += '<img src="' + url + '" alt="' + filename + '" />'; outputHTML +='</div>'; return outputHTML; } // Since you are returning from within the code block above // (when the condition is true) you don't need to put an // else statement. return ''; }).join(''); return $employees = \DB::table('employees') ->whereBetween( 'HIRE_DATE', array( \to_date('13/01/01','mm/dd/yyyy'), \to_date('07/06/02','mm/dd/yyyy') ) ) ->get(); ,您可以使用内置地图函数来获取具有所需输出的数组,然后加入它:

yield
相关问题