Как добавить словари в массив или ключ словаря? - PullRequest
0 голосов
/ 06 февраля 2019

Я работаю над проектом, который сопоставляет учителей с классами и информацией о классе.Я использую javaScript.

У меня словарь настроен так:

{ Instructor: 'Gondree, Mark',
Class: 'CS 349',
Section: '001',
Components: [ 'ACT' ],
Title: 'Problem Solving in a Team Envn',
WTU: 1.3,
Units: '1',
Meeting_Days: 'F',
Time: '10:00:00 - 11:50:00',
Room: 'STEV1034',
Enrollment: 22,
FTE: 1.47 }

У меня есть несколько таких с разными инструкторами.Проблема, с которой я сталкиваюсь, заключается в использовании Инструктора для группировки их в словарь или массив.Мой идеальный вывод:

{
MARK GONDREE{
{ Instructor: 'Gondree, Mark',
Class: 'CS 349',
Section: '001',
Components: [ 'ACT' ],
Title: 'Problem Solving in a Team Envn',
WTU: 1.3,
Units: '1',
Meeting_Days: 'F',
Time: '10:00:00 - 11:50:00',
Room: 'STEV1034',
Enrollment: 22,
FTE: 1.47 },
ANOTHER CLASS HERE

GLEN CARTER{
{ Instructor: 'Carter, Glenn',
Class: 'CS 101',
Section: '018',
Components: [ 'DIS', 'ACT' ],
Title: 'Intro Computers & Computing',
WTU: 1.3,
Units: '3',
Meeting_Days: 'W',
Time: '10:00:00 - 11:50:00',
Room: 'DARW0024',
Enrollment: 14,
FTE: 2.8 },
ANOTHER CLASS HERE
}

По сути, у меня есть вся информация о классе и инструкторы по порядку по имени, но мне просто нужно сгруппировать их.Есть ли у вас какие-либо советы о том, использовать ли массив или словарь?Кроме того, можно ли добавить класс в словарь или массив определенного инструктора?

Ответы [ 3 ]

0 голосов
/ 06 февраля 2019

Вам просто нужно создать массив таких объектов:

let instructors = [
    { Instructor: 'Gondree, Mark', Class: 'CS 349', Section: '001', Components: [ 'ACT' ], Title: 'Problem Solving in a Team Envn', WTU: 1.3, Units: '1', Meeting_Days: 'F', Time: '10:00:00 - 11:50:00', Room: 'STEV1034', Enrollment: 22, FTE: 1.47 },
    { Instructor: 'Carter, Glenn', Class: 'CS 101', Section: '018', Components: [ 'DIS', 'ACT' ], Title: 'Intro Computers & Computing', WTU: 1.3, Units: '3', Meeting_Days: 'W', Time: '10:00:00 - 11:50:00', Room: 'DARW0024', Enrollment: 14, FTE: 2.8 },
    { Instructor: 'Gondree, Mark', Class: 'CS 349', Section: '001', Components: [ 'ACT' ], Title: 'Problem Solving in a Team Envn', WTU: 1.3, Units: '1', Meeting_Days: 'F', Time: '10:00:00 - 11:50:00', Room: 'STEV1034', Enrollment: 22, FTE: 1.47 }
];

console.log(instructors[0].Instructor);
> Gondree, Mark
0 голосов
/ 06 февраля 2019

использовать карту в массиве (arr обозначает исходный массив) объектов и создавать новый массив объектов после удаления 'x.Instructor'

let new_arr = arr.map(x => ({
    [x.Instructor]: (() => {
        delete x.Instructor;
        return x;
    })()
}))
console.log('arr :', arr);
console.log('new_arr :', new_arr);
0 голосов
/ 06 февраля 2019

Вы можете сохранить объекты в Map и использовать Map.get(<instructor name>) для получения соответствующего объекта и Map.set() для установки или изменения объекта.

const data = [{"Instructor":"Gondree, Mark","Class":"CS 349","Section":"001","Components":["ACT"],"Title":"Problem Solving in a Team Envn","WTU":1.3,"Units":"1","Meeting_Days":"F","Time":"10:00:00 - 11:50:00","Room":"STEV1034","Enrollment":22,"FTE":1.47}];

const formatEntry = entry => 
  [
    entry.Instructor // get `Instructor` property value
    .toUpperCase() // convert to uppercase
    .match(/[A-Z]+/ig) // match only letters, omitting space and comma
    .reverse() // reverse original entry format of name `'Gondree, Mark'`
    .join(' ') // join name array with space character
  , entry // original plain object `entry` 
  ];

const instructors = new Map(data.map(formatEntry)); // enter initial entry
// set new entry
instructors.set(
  ...formatEntry({"Instructor":"Carter, Glenn","Class":"CS 101","Section":"018","Components":["DIS","ACT"],"Title":"Intro Computers & Computing","WTU":1.3,"Units":"3","Meeting_Days":"W","Time":"10:00:00 - 11:50:00","Room":"DARW0024","Enrollment":14,"FTE":2.8})
);
// get entries
console.log(
  instructors.get('MARK GONDREE')
, instructors.get('GLENN CARTER')
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...