老师,有一个forEach()的问题请教

来源:3-2 项目作业

A拨云见雾

2020-11-13 16:31:09

# 具体遇到的问题
老师,我想问下为什么用forEach就可以读取并加载json数据,用双层for循环就不行?代码见下方,还有老师能不能讲解下forEach和for循环的区别?
# 尝试过的解决思路和结果
我试着用简单的数组循环分析,例:

var arr1=[1,2],arr2=[3,4];

var obj = [arr1,arr2];

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

var item = obj[i];

for(var j=0; j<item.length; j++){

console.log(item[j])

}

}

http://img.mukewang.com/climg/5fae42c909840e0905910299.jpg

用forEach和双层for循环的方法似乎都可以成功

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

//不报错,但是用双层for循环为什么不能成功读取json数据,而用forEach就可以
function getOthers(data){
        var arr = data.discounts2;
        var othertmpl = '<div class="other-info">'+
                    '<img src=$icon_url alt="" class="others-tag">'+
                    '<span class="others-desc">$info</span>'+
                    '</div>';
        var len = arr.length;
        var str = '';
        for(var i = 0; i < len; i++){
            var item = arr[i]; 
            for(var j = 0;j < item.length; j++){
                var othertmpl = '<div class="other-info">'+
                    '<img src=$icon_url alt="" class="others-tag">'+
                    '<span class="others-desc">$info</span>'+
                    '</div>';
                othertmpl = othertmpl.replace('$icon_url',item.icon_url).replace('$info',item.info);
                str += othertmpl;
            } 
        }
        return str;
    }
    
 // 用forEach方法可以成功读取加载数据
 function getOthers(data){
        var arr = data.discounts2;
        var othertmpl = '<div class="other-info">'+
                    '<img src=$icon_url alt="" class="others-tag">'+
                    '<span class="others-desc">$info</span>'+
                    '</div>';
        var str = '';
        
        arr.forEach(function(item,index){
            
            var _str = othertmpl.replace('$icon_url',item.icon_url).replace('$info',item.info);
        
            str += _str;
        })
        return str;
    }

在这里输入代码,可通过选择【代码语言】突出显示

写回答

1回答

好帮手慕慕子

2020-11-13

同学你好,针对同学的问题解答如下:

1、forEach是for循环的简化写法,forEach遍历数据时,代码书写起来比较简单,它俩的区别就是在遍历比较复杂的数据时,for循环的性能比forEach高,但是目前阶段,遍历数据都是相对比较简单的,体现不出来差别,同学了解下这个区别就可以了。

2、只有同学的部分代码,无法准确的测试与定位问题,建议:

(1)提交作业,标注上你的问题,批作业的老师会针对同学的完整代码,给出详细的修改建议,并整理成文档发送给同学。

(2)新建提问,将你写的完整代码全部粘贴过来,老师帮助同学测试下代码。

祝学习愉快~

0

0 学习 · 6815 问题

查看课程