【问题标题】:How to create a complex Javascript object如何创建一个复杂的 Javascript 对象
【发布时间】:2020-02-23 17:11:24
【问题描述】:

我是 JavaScript 和 Python 以及一般编程的新手。

我想在 JavaScript 数据对象中存储有关常见英语音标的数据。大约有80个录音制品。每个录音制品都有一个或多个可能的发音。每个音像的发音都会有一个或多个单词示例的列表(例如,最多 30 个),其中包括 IPA 音标和外语翻译。例如,音标‘ea’有三个读音,

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

(1)ˈbeadˈ, 'feat', 'beat'... (2)‘面包’、‘头’、‘死’…… (3)‘破’……

是否有最适合此的内置数据结构?我正在考虑一个类来制作这些对象并将其存储在数组或其他东西中。我应该如何编写用于填充数据对象的文本?

【问题讨论】:

  • 到目前为止你尝试过什么? “最适合此的内置数据结构” - 可能是对象和数组的混合体。
  • 如果下面的任何答案回答了您的问题,Stack Overflow 的工作方式,您可以通过单击旁边的复选标记“接受”该答案; details here。但您的问题得到实际回答;如果没有,请考虑在问题中添加更多详细信息。 (或者什么都不做,当然。:-))

标签: javascript data-structures javascript-objects


【解决方案1】:

JavaScript 有四种基本的结构化数据类型:

  • 对象,具有属性,具有键(名称为字符串或符号)和值(任何类型)
  • 数组,有元素,有索引和值(数组在技术上是对象,但暂时忽略它)
  • Map,有条目,有键(任何类型)和值(任何类型)
  • Set,具有任何类型的唯一条目(可能对您正在做的事情没有用)

听起来您可能想要一个对象或地图,其中键是留声机,值是对象。在每个对象中,您可能会有另一个 Map 或对象,其中的值是提供更多信息(示例和翻译)的对象。

这是一个使用 Maps 的示例,您可以通过将数组数组传递给 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 属性,其中包含发音映射和它们映射到的对象(examplestranslations)。

关于 MDN 的更多信息:

【讨论】:

    【解决方案2】:

    数组的映射应该可以完成这项工作。 map key 可以包含一个标识符,而 map value 是一个可以包含发音的数组。

    map 是一个 (key, value) 对,在你的情况下 value 将是一个数组/[]。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      相关资源
      最近更新 更多