19新版教育培训风格演示站

标题: 为什么forEach只跑出第一个值? 没办法打印出全部 [打印本页]

作者: jongde    时间: 2019-1-10 18:00
标题: 为什么forEach只跑出第一个值? 没办法打印出全部
假设有一个数组长这样
  1. var qq = [
  2.   
  3.   {
  4.     "info": {"event": 123},
  5.     "odds":
  6.     [
  7.       {"o": ["test","123",],
  8.         "oName": "超级联赛 冠军"
  9.       },
  10.       {"o": ["qq","ee",],
  11.         "oName": "苏格兰"
  12.       },
  13.     ],
  14.     "main": true,
  15.   },
  16.   {
  17.     "info": {"event": 323},
  18.     "odds": [
  19.       {"o": ["jk","234"] ,
  20.         "oName": "苏格兰"
  21.       }
  22.     ],
  23.     "main": true,
  24.   }
  25.   ];
复制代码


我想要打印出每一个oName


  1. qq.forEach(function(item,i){
  2.   
  3.     console.log(item.odds.oName)
  4.     //结果undefined
  5.    
  6.     console.log(item.odds[i].oName)
  7.     //成功列出第一个"超级联赛 冠军",
  8.     //然后显示"TypeError: Cannot read property 'oName' of undefined

  9.   return

  10. });
复制代码




为什么没办法打印出全部的oName? 怎么解决呢?



作者: Rosen_Gao    时间: 2019-1-10 18:00
  1. for(var i=0;i<qq.length;i++){
  2.                 for(var j=0;j<qq[i].odds.length;j++){
  3.                 console.log(qq[i].odds[j].oName);
  4.                 }
  5.             }
  6.       
复制代码

作者: 墨染ART    时间: 2019-1-10 18:01
这样肯定不行啊,odds也是个数组,最简单粗暴的是双重循环:

  1. qq.forEach((item,i)=>{
  2.     if (item.odds) {
  3.         item.odds.forEach((val,index)=>{
  4.             console.log(val.oName)
  5.         })
  6.     }
  7. });
复制代码

作者: 匿名    时间: 2020-4-16 17:20
Rosen_Gao 发表于 2019-1-10 18:00

111111111111




欢迎光临 19新版教育培训风格演示站 (http://47.100.112.22/demo/train/) Powered by Discuz! X3.5