Bonjour, je suis assez nouveau sur Node.js et je tombe sur un problème avec le dictionnaire et le tableau. Et ce que je veux, c'est accéder à, courseid, coursename.

 data = [
    {
        name: "Ole Nordmann",
        pin: 1331,
        Job: "Yes",
        AccountNumber: 1234,
        income: 50000,
        loan: 1000,
        Savings: 10000000,
        Balance: 5500,
        TransactionHistory: [
            { courseid: "CS654", coursename: "Introduction to Programming", credithours: 7.5 }, 
            { courseid: "CS081", coursename: "Database Management", credithours: 7.5 },
            { courseid: "CS943", coursename: "System Design", credithours: 7.5 }

        ]

    }
0
JoyfulReindeer 18 avril 2020 à 18:36

3 réponses

Meilleure réponse

Vous pouvez utiliser la méthode find, où u peut passer la fonction callback pour correspondre.

data = [
  {
      name: "Ole Nordmann",
      pin: 1331,
      Job: "Yes",
      AccountNumber: 1234,
      income: 50000,
      loan: 1000,
      Savings: 10000000,
      Balance: 5500,
      TransactionHistory: [
          { courseid: "CS654", coursename: "Introduction to Programming", credithours: 7.5 }, 
          { courseid: "CS081", coursename: "Database Management", credithours: 7.5 },
          { courseid: "CS943", coursename: "System Design", credithours: 7.5 }
      ]
  }
]

const findUserByName = (name, data = []) => {
  return data.find(user => user.name === name)
}
const findUserByCourseId = (courseid, data = []) => {
  return data.find(user => user.TransactionHistory.some(history => history.courseid === courseid))
}
console.log(findUserByName("Ole Nordmann", data))
console.log(findUserByCourseId("CS654", data))
0
xdeepakv 18 avril 2020 à 16:01

Voici la solution à votre problème. J'espère que cela vous aidera

Selon vos besoins, j'ai également ajouté la fonction setCourseInfo pour ajouter un nouveau cours.

const data = [
  {
    name: "Ole Nordmann",
    pin: 1331,
    Job: "Yes",
    AccountNumber: 1234,
    income: 50000,
    loan: 1000,
    Savings: 10000000,
    Balance: 5500,
    TransactionHistory: [
      {
        courseid: "CS654",
        coursename: "Introduction to Programming",
        credithours: 7.5,
      },
      {
        courseid: "CS081",
        coursename: "Database Management",
        credithours: 7.5,
      },
      { courseid: "CS943", coursename: "System Design", credithours: 7.5 },
    ],
  },
];

const getCourseInfo = (data) => {
  return data[0]["TransactionHistory"].reduce((courseInfo, course) => {
    return (courseInfo += `${course.courseid} ${course.coursename}\n`);
  }, ``);
};

const setCourseInfo = (newCourseData) => {
  data[0]["TransactionHistory"].push(newCourseData);
}

console.log(getCourseInfo(data));
const newCourseData = {
 courseid: 2323,
 coursename: "This is a test ",
 credithours: 32
}
setCourseInfo(newCourseData);
console.log('-----after adding new course----');
console.log(getCourseInfo(data));
0
Sifat Haque 18 avril 2020 à 16:12

Vous pouvez accéder à l'ID et au nom du cours de la manière suivante:

    var courseId = data[0].TransactionHistory[0].courseid
    var courseName = data[0].TransactionHistory[0].coursename

Pour accéder à toutes les données du tableau, écrivez une boucle for :

    function a() {
      var result = "";
      for (var i = 0; i < data.length; i++) {
        for (var j=0; j< data[i].TransactionHistory.length; j++) {
          var item = data[i].TransactionHistory;
          result = result + item[j].courseid + " " + item[j].coursename + "\n";
        }
      }
      return result;
    }

La variable de résultat (renvoyée par la fonction a) aura les détails de courseid et de nom de cours.

0
inuYasha 18 avril 2020 à 15:48