Renaud is Not Bill Gates
Renaud is Not Bill Gates

Reputation: 2084

iterating over object in an array throws Cannot read property of undefined

I have two arrays caNCourbeData and caN_1CourbeData , each one contains 12 objects, and they have the same object structure.

this is an example of an object :

enter image description here

So what I want to do is to create a new array (caCourbe) that will contains a list of object as following :

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

chiffreAffaireN from caNCourbeData[i].chiffreAffaire and chiffreAffaireN_1 from caN_1CourbeData[i].chiffreAffaire.

So I did as the following :

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); 
});

but then I get this error :

enter image description here

in my code I logged caN_1CourbeData and I get the array in the console, but I dont know why I'm getting that is undefined :

enter image description here

How can I solve this ?

Edit 1 :

I tried to use forEach with caN_1CourbeData instead of caNCourbeData since they have the same length as the following :

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); 
});

but I always get the same error and this time in this line : caCourbeElement.chiffreAffaireN = caNCourbeData[i].chiffreAffaire;

Edit 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
}];

Upvotes: 0

Views: 117

Answers (1)

StackOverMySoul
StackOverMySoul

Reputation: 2037

switch the order of the arguments passed to your forEach callback, index is the second parameter, this works in my console:

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

Upvotes: 5

Related Questions