为了账号安全,请及时绑定邮箱和手机立即绑定

在写printcourseinfo函数时,为什么遍历courseData用.each方法不行

var http=require('http')
var cheerio=require('cheerio')
var url = 'http://www.imooc.com/learn/348'

var filterChapter=function(data){
    var $ = cheerio.load(data)
    var chapters=$('.chapter')
    var courseData = []

    chapters.each(function(item){
       var chapter=$(this)
       chapterTitle=chapter.find("strong").text()
       videos=chapter.find("li")
       var chapterData={
        chapterTitle:chapterTitle,
        videos:[]
       }
       videos.each(function(item){
        var video=$(this)
        var videoTitle=video.find(".J-media-item").text()
        var id = video.find(".J-media-item").attr("href").split("video/")[1]
        
        chapterData.videos.push({
            videoTitle:videoTitle,
            id:id
        })
       })
       courseData.push(chapterData)
       

    })

return courseData
}
function printcourseinfo(courseData){
    courseData.forEach(function(item){
        var chapterTitle=item.chapterTitle
        console.log(chapterTitle+'\n')
        item.videos.forEach(function(it){
            var videoTitle= it.videoTitle
            var videoid=it.id
            console.log(videoTitle+" "+videoid+"\n")
        })

    })
}
http.get(url,function(res){
    var html = ''
    res.on('data',function(data){
        html += data
    })
    res.on('end',function(){
        var courseData = filterChapter(html)
        printcourseinfo(courseData)
    })
}).on('error',function(){
    console.log('获取课程数据')
})


正在回答

1 回答

courseData为数组,因为.each方法是遍历对象的,无法遍历数组,.forEach才是遍历数组的方法

0 回复 有任何疑惑可以回复我~
#1

1VAN1 提问者

非常感谢!
2016-08-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
进击Node.js基础(一)
  • 参与学习       219397    人
  • 解答问题       896    个

本视频教程带你揭开Node.js的面纱,带你走进一个全新世界

进入课程

在写printcourseinfo函数时,为什么遍历courseData用.each方法不行

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信