开发者问题收集

TypeError:无法读取未定义的属性“forEach”,javascript

2020-06-18
211

尝试遍历字典并获取值并获取其中的每个数组值来操作它们但出现此错误,起初我以为可能是因为我忘记了定义字典的行中的分号但错误仍然存​​在。



 getPieChartSeries(logsList){
   let devidedLogs = this.divideLogsByExitCode(logsList);
   console.log(devidedLogs);
   let pieChartSeries = [];
   Object.values(devidedLogs).array.forEach(element => {
     pieChartSeries.push(this.getPrecentageOfLogType(element,logsList))
   });
   console.log(pieChartSeries)
 }

 getPrecentageOfLogType(logsList,logsOfTypeList){
   let numOflogs = logsList.length
   let numOflogsOfType = logsOfTypeList.length
   let precentageOfLogType = Math.round((numOflogsOfType  / numOflogs ) * 100)

   return precentageOfLogType
 }
 getCurrentTime(){
   var d = new Date();
   return d.toLocaleString()
 }

devidedLogs 是



{failedFaults: Array(0), failedProbesLogs: Array(1), failedRollbackLogs: Array(0), rollbackedLogs: Array(0), selfHealedLogs: Array(3)}failedFaults: []failedProbesLogs: [{…}]failedRollbackLogs: []rollbackedLogs: []selfHealedLogs: (3) [{…}, {…}, {…}]__proto__: Object

2个回答

我认为您正在迭代错误的变量。

已经 .values() 返回数组,之后您不必再次添加 .array

因此,您的代码应更新为以下几行:

getPieChartSeries(logsList){
 let devidedLogs = this.divideLogsByExitCode(logsList);
 console.log(devidedLogs);
 let pieChartSeries = [];
 Object.values(devidedLogs).forEach(element => {
 pieChartSeries.push(this.getPrecentageOfLogType(element,logsList))
 });
 console.log(pieChartSeries)
}
Minal Shah
2020-06-18

Object.values(devidedLogs) 将返回所有 Object 值的数组,同样地,您可以使用 Object.keys(devidedLogs) 获取键,或使用 Object.entries(devidedLogs) 获取键值元组数组。

另请查看 Object 类的 文档 :)

Caro
2020-06-18