2017-01-11 4 views
0
function PersonAMK(vn, ln) { 
this.nachname = ln; 
this.vn = vn; 
this.marks = []; 

this.marks.push([4, 67, 5]); 
this.marks.push([41, 63, 5]); 
this.marks.push([4, 67, 55]); 
} 

var peprson = new PersonAMK('Unknwon', 'Unknown'); 


peprson.marks.forEach(function callBack(arrSch1, arrSch2) { 
    arrSch1.forEach(function callBack(nod1) { 
    console.log(nod1); 
    }); 
    arrSch2.forEach(function callBack(nod1) { 
    console.log(nod1); 
    }); 
}); 

Я получаю ошибку: arrSch2.forEach не является функциейпечати массив, который содержит массивы

Я на самом деле не понимаю, почему arrSch2.forEach не функция. Не является ли второе значение меток массивом со значениями [41,63,5] ;?

+0

Вам не нужно 'arrSch2.forEach()', вы уже перечисляете через массив 2d с помощью циклов peptson.marks.forEach() 'и' arrSch1.forEach() '. – riscarrott

ответ

0

Второй аргумент, переданный forEach, - это index. Итак, arrSch2 на самом деле просто номер. Метод forEach не существует для числа.

Вот другой точки зрения:

peprson.marks.forEach(function callBack(arrSch1, index) { 
    ... 
} 
0

Array.prototype.forEach функция обратного вызова принимает три аргумента:

  1. CurrentValue - текущий элемент, обрабатываемых в массиве. index
  2. index - Индекс текущего элемента, обрабатываемого в массиве.
  3. array - массив, к которому применяется forEach().

arrSch2 - это номер, а не массив.

Изменить код для этого - я удалил второй Foreach вызов:

function PersonAMK(vn, ln) { 
 
this.nachname = ln; 
 
this.vn = vn; 
 
this.marks = []; 
 

 
this.marks.push([4, 67, 5]); 
 
this.marks.push([41, 63, 5]); 
 
this.marks.push([4, 67, 55]); 
 
} 
 

 
var peprson = new PersonAMK('Unknwon', 'Unknown'); 
 

 

 
peprson.marks.forEach(function callBack(arrSch1) { 
 
    arrSch1.forEach(function callBack(nod1) { 
 
    console.log(nod1); 
 
    }); 
 
});

0

Второй элемент массива [41, 63, 5], но это не то, что прошло в в ваших аргументах. Если вы просто хотите итерации по массиву, то будет работать следующее:

function PersonAMK(vn, ln) { 
    this.nachname = ln; 
    this.vn = vn; 
    this.marks = []; 

    this.marks.push([4, 67, 5]); 
    this.marks.push([41, 63, 5]); 
    this.marks.push([4, 67, 55]); 
    } 

    var peprson = new PersonAMK('Unknwon', 'Unknown'); 


    peprson.marks.forEach(function (arr) { 
     arr.forEach(function (nod1) { 
     console.log(nod1); 
     }); 
    }); 
0

Почему бы вам не использовать простые для Loop.

function PersonAMK(vn, ln) { 
 
this.nachname = ln; 
 
this.vn = vn; 
 
this.marks = []; 
 

 
this.marks.push([4, 67, 5]); 
 
this.marks.push([41, 63, 5]); 
 
this.marks.push([4, 67, 55]); 
 
} 
 

 
var peprson = new PersonAMK('Unknwon', 'Unknown'); 
 

 
    for (i = 0; i < peprson.marks.length; i++) { 
 
     for (j = 0; j < peprson.marks[i].length; j++){ 
 
      console.log(peprson.marks[i][j]);  
 
     } 
 
    }

Попробуйте это. Использование метода JSON.stringify(). Для этого выводит следующий результат: {"nachname":"Unknown","vn":"Unknwon","marks":[[4,67,5],[41,63,5],[4,67,55]]}. Вам нужно перебрать peprson.marks Запомнить peprson.marks содержит массивы по каждому индексу. Удачи!!