Как создать сложный Javascript объект - PullRequest
1 голос
/ 23 февраля 2020

Я новичок в JavaScript и Python, и программирование в целом.

Я хочу хранить данные об обычных фонограммах Engli sh в объекте данных JavaScript. Есть около 80 фонограмм. Каждая фонограмма имеет одно или несколько возможных произношений. Произношение каждой фонограммы будет иметь список из одного или нескольких примеров слов (скажем, максимум 30), которые будут включать символы IPA phoneti c и перевод на иностранный язык. Например, фонограмма 'ea' имеет три произношения:

(1) 'iːˈ, (2) ˈɛˈ & (3) ˈeɪˈ:

(1) ˈbeadˈ,' feat ',' beat '... (2)' bread ',' head ',' dead '... (3)' break '...

Существует ли встроенная структура данных, которая лучше всего подходит для этого? Я имею в виду класс для создания этих объектов и хранения его в массиве или что-то. И как мне написать свой текст для заполнения объектов данных?

Ответы [ 2 ]

2 голосов
/ 23 февраля 2020

JavaScript имеет четыре основных структурированных типа данных:

  • объекты, которые имеют свойства, которые имеют ключи (имена, которые являются строками или символами) и значения (любой тип)
  • массивы, которые имеют элементы, которые имеют индексы и значения (массивы являются технически объектами, но пока игнорируем это)
  • Map, которые имеют записи, которые имеют ключи (любой тип) и значения (любой тип )
  • Set, который содержит уникальные записи любого типа (вероятно, бесполезные для того, что вы делаете)

Звучит так, как будто вы, вероятно, захотите либо объект, либо Карта, где ключи - это фонографы, а значения - объекты. Внутри каждого объекта у вас, вероятно, будет другая карта или объект, обозначенный произношением, где значения являются объектами, дающими дополнительную информацию (примеры и переводы).

Вот пример использования карт, который вы инициализируете, передавая массив массивов в конструктор Map:

const data = new Map([
    [
        "ea", 
        {
            pronunciations: new Map([
                [
                    "iː",
                    {
                        examples: ["bead", "feat"],
                        transations: [/*...*/]
                    }
                ]
            ]),
            otherInfo: /*...*/
        }
    ],
    // ...the other 79 entries...
]);

Получение данных для записи на основе фонограммы:

const entry = data.get("ea");

Объект entry будет иметь свойство pronunciations с картой произношения и объектов (с examples и translations), на которые они отображаются.

Подробнее о MDN:

0 голосов
/ 23 февраля 2020

карта массива должна делать эту работу. Ключ карты может содержать идентификатор, в то время как значение карты - это массив, который может содержать произношение.

Карта - это пара (ключ, значение), где значением будет массив / [] в вашем случае.

...