итерация по объекту в массиве приводит к невозможности чтения свойства undefined

#javascript

#javascript

Вопрос:

У меня есть два массива caNCourbeData , и caN_1CourbeData каждый из них содержит 12 объектов, и они имеют одинаковую структуру объекта.

это пример объекта :

введите описание изображения здесь

Итак, что я хочу сделать, это создать новый array ( caCourbe ), который будет содержать список объектов следующим образом :

 {
   y : '2016-01',
   chiffreAffaireN : 1256.92,
   chiffreAffaireN_1 : -141559.33
}
  

chiffreAffaireN из caNCourbeData[i].chiffreAffaire и chiffreAffaireN_1 из caN_1CourbeData[i].chiffreAffaire .

Итак, я сделал следующее :

 var caCourbe = new Array();

caNCourbeData.forEach(function(i, caNCourbeDataElement){
    caCourbeElement = new Object();
    caCourbeElement.y = '2016-' (i 1).toLocaleString(undefined, {minimumIntegerDigits: 2, useGrouping:false});
    caCourbeElement.chiffreAffaireN = caNCourbeDataElement.chiffreAffaire;
    caCourbeElement.chiffreAffaireN_1 = caN_1CourbeData[i].chiffreAffaire;
    caCourbe.push(caCourbeElement); 
});
  

но затем я получаю эту ошибку :

введите описание изображения здесь

в моем коде я зарегистрировался caN_1CourbeData и получаю массив в консоли, но я не знаю, почему я получаю это значение undefined :

введите описание изображения здесь

Как я могу это решить?

Редактировать 1 :

Я пытался использовать forEach с caN_1CourbeData вместо caNCourbeData поскольку они имеют ту же длину, что и следующие :

 caN_1CourbeData.forEach(function(i, caN_1CourbeDataElement){
    caCourbeElement = new Object();
    caCourbeElement.y = '2016-' (i 1).toLocaleString(undefined, {minimumIntegerDigits: 2, useGrouping:false});
    caCourbeElement.chiffreAffaireN = caNCourbeData[i].chiffreAffaire;
    caCourbeElement.chiffreAffaireN_1 = caN_1CourbeDataElement.chiffreAffaire;
    caCourbe.push(caCourbeElement); 
});
  

но я всегда получаю одну и ту же ошибку и на этот раз в этой строке : caCourbeElement.chiffreAffaireN = caNCourbeData[i].chiffreAffaire;

Редактировать 2:

 var caNCourbeData = [{
    "mois": 1,
    "nbFactures": 2,
    "nbFacturesReglees": 1,
    "nbdossiersRealise": 1,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 1256.92,
    "id": 0
}, {
    "mois": 2,
    "nbFactures": 4,
    "nbFacturesReglees": 2,
    "nbdossiersRealise": 0,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 413.00,
    "id": 1
}, {
    "mois": 3,
    "nbFactures": 3,
    "nbFacturesReglees": 3,
    "nbdossiersRealise": 0,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 30.00,
    "id": 2
}, {
    "mois": 4,
    "nbFactures": 0,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 0,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "id": 3
}, {
    "mois": 5,
    "nbFactures": 0,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 0,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "id": 4
}, {
    "mois": 6,
    "nbFactures": 9,
    "nbFacturesReglees": 1,
    "nbdossiersRealise": 0,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 2253.31,
    "id": 5
}, {
    "mois": 7,
    "nbFactures": 0,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 0,
    "nbContrat": 2,
    "nbContratConverti": 0,
    "id": 6
}, {
    "mois": 8,
    "nbFactures": 0,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 0,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "id": 7
}, {
    "mois": 9,
    "nbFactures": 0,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 0,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "id": 8
}, {
    "mois": 10,
    "nbFactures": 2,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 0,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 450.60,
    "id": 9
}, {
    "mois": 11,
    "nbFactures": 0,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 0,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "id": 10
}, {
    "mois": 12,
    "nbFactures": 0,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 0,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "id": 11
}];


var caN_1CourbeData = [{
    "mois": 1,
    "nbFactures": 36,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 3,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": -141559.33,
    "id": 0
}, {
    "mois": 2,
    "nbFactures": 144,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 23,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 19662.80,
    "id": 0
}, {
    "mois": 3,
    "nbFactures": 39,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 0,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 10835.42,
    "id": 0
}, {
    "mois": 4,
    "nbFactures": 30,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 2,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 12166.74,
    "id": 0
}, {
    "mois": 5,
    "nbFactures": 73,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 1,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 19391.04,
    "id": 0
}, {
    "mois": 6,
    "nbFactures": 36,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 5,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 23929.57,
    "id": 0
}, {
    "mois": 7,
    "nbFactures": 24,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 1,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 5446.59,
    "id": 0
}, {
    "mois": 8,
    "nbFactures": 24,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 0,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 3019.31,
    "id": 0
}, {
    "mois": 9,
    "nbFactures": 20,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 0,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 3178.76,
    "id": 0
}, {
    "mois": 10,
    "nbFactures": 1,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 0,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 10.00,
    "id": 0
}, {
    "mois": 11,
    "nbFactures": 14,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 2,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 6020.56,
    "id": 0
}, {
    "mois": 12,
    "nbFactures": 21,
    "nbFacturesReglees": 0,
    "nbdossiersRealise": 6,
    "nbContrat": 0,
    "nbContratConverti": 0,
    "chiffreAffaire": 4709.05,
    "id": 0
}];
  

Комментарии:

1. пожалуйста, добавьте массивы также в виде текста.

2. Явно caN_1CourbeData[i] не определено, поэтому два массива не совпадают

3. @NinaScholz пожалуйста, проверьте редактирование 2

4. @adeneo пожалуйста, проверьте редактирование 2

5. Простой console.log(i) сказал бы вам, что не так.

Ответ №1:

измените порядок аргументов, передаваемых вашему обратному вызову forEach, индекс является вторым параметром, это работает в моей консоли:

 caN_1CourbeData.forEach(function(caN_1CourbeDataElement, i){
    caCourbeElement = new Object();
    caCourbeElement.y = '2016-' (i 1).toLocaleString(undefined, {minimumIntegerDigits: 2, useGrouping:false});
    caCourbeElement.chiffreAffaireN = caNCourbeData[i].chiffreAffaire;
    caCourbeElement.chiffreAffaireN_1 = caN_1CourbeDataElement.chiffreAffaire;
    caCourbe.push(caCourbeElement); 
});
  

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Parameters