Получить массив идентификатора студента - PullRequest
0 голосов
/ 28 апреля 2018

Помогите мне получить массив всех идентификаторов студентов и колледжей из следующих данных JSON. Я хочу иметь;

//to store id of all colleges.
var collegeid = [];

//store id of all students.
var studentsid = [];

//students id as per college:
var studentsIdInCollege1 = [];

var data = {  
  "college":[  
    {  
      "id":1,
      "school":"abc",
      "course":"cde",
      "students":[  
        {  
          "id":1,
          "name":"abc 123",
          "number":"156888"
        },
        {  
          "id":2,
          "name":"abc 123",
          "number":"156888"
        }
      ]
    },
    {  
      "id":2,
      "school":"xyz",
      "course":"lopl",
      "students":[  
        {  
          "id":3,
          "name":"abc 123",
          "number":"156888"
        },
        {  
          "id":4,
          "name":"abc 123",
          "number":"156888"
        }
      ]
    }
  ]
}

`

Ответы [ 3 ]

0 голосов
/ 28 апреля 2018

Используйте .map() для получения идентификаторов колледжа:

let collegeIds = data.college.map(({ id }) => id);

Используйте .reduce() для идентификаторов студентов:

let studentIds = data.college.reduce((a, c) => (
  a.concat(c.students.map(({ id }) => id))
), []);

Используйте .reduce(), чтобы получить массив массивов, где каждый массив содержит идентификаторы учеников:

let studentInEachCollege = data.college.reduce((a, c) => (
  a.push(c.students.map(({ id }) => id)), a
), []);

Это позволит вам получить доступ к каждому студенту колледжа, используя индекс, такой как studentInEachCollege[0] для первого колледжа, studentInEachCollege[1] для второго и так далее.

Демо-версия:

var data = {  
  "college":[  
    {  
      "id":1,
      "school":"abc",
      "course":"cde",
      "students":[  
        {  
          "id":1,
          "name":"abc 123",
          "number":"156888"
        },
        {  
          "id":2,
          "name":"abc 123",
          "number":"156888"
        }
      ]
    },
    {  
      "id":2,
      "school":"xyz",
      "course":"lopl",
      "students":[  
        {  
          "id":3,
          "name":"abc 123",
          "number":"156888"
        },
        {  
          "id":4,
          "name":"abc 123",
          "number":"156888"
        }
      ]
    }
  ]
};

let collegeIds = data.college.map(({ id }) => id);
let studentIds = data.college.reduce((a, c) => (
  a.concat(c.students.map(({ id }) => id))
), []);
let studentInEachCollege = data.college.reduce((a, c) => (
  a.push(c.students.map(({ id }) => id)), a
), []);

console.log(collegeIds);
console.log(studentIds);
console.log(studentInEachCollege);

Документы:

0 голосов
/ 28 апреля 2018

// College ids 
var cID = data.college.map((c) => { return c.id});

// Students
// It returns two arrays so you need to reduce it...
var students = data.college.map((c) => { return c.students});

var allStudents = students.reduce((a,b) => {return a.concat(b)}, []);

// IDs
var sID = allStudents.map((c) => { return c.id});
0 голосов
/ 28 апреля 2018

Для колледжей, просто map массив колледжей до id каждого объекта. Для студентов, используйте [].concat(..., чтобы распределить по карте идентификаторы студентов и получить плоский объект:

const input = {  
  "college":[  
    {  
      "id":1,
      "school":"abc",
      "course":"cde",
      "students":[  
        {  
          "id":1,
          "name":"abc 123",
          "number":"156888"
        },
        {  
          "id":2,
          "name":"abc 123",
          "number":"156888"
        }
      ]
    },
    {  
      "id":2,
      "school":"xyz",
      "course":"lopl",
      "students":[  
        {  
          "id":3,
          "name":"abc 123",
          "number":"156888"
        },
        {  
          "id":4,
          "name":"abc 123",
          "number":"156888"
        }
      ]
    }
  ]
}

const collegeIds = input.college.map(({ id }) => id);
console.log('collegeIds: ' + collegeIds);
const studentIds = [].concat(...input.college.map(({ students }) => students.map(({ id }) => id)));
console.log('studentIds: ' + studentIds);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...