【问题标题】:How to declare nested objects in JavaScript?如何在 JavaScript 中声明嵌套对象?
【发布时间】:2013-07-20 15:22:03
【问题描述】:

我正在尝试创建一个包含对象的对象,因此可以将其视为字典:

var dictionaries = {};
dictionaries.english_to_french =
{
 {english:"hello",french:"bonjour"},
 {english:"i want",french:"je veux"},
 {english:"bla",french:"le bla"}
};

但它给出了错误Uncaught SyntaxError: Unexpected token { 我做错了什么?

谢谢!

编辑

很抱歉,我没有说明我想要做什么。 修改了上面的代码。

【问题讨论】:

  • dictionaries.english_to_french = {english:"hello",french:"bonjour"}
  • ObjectLiteral 的规范读起来很有用。

标签: javascript object nested multidimensional-array


【解决方案1】:

你试图给你的对象一个属性,而该属性将是一个单一的对象:

dictionaries.english_to_french =
  {english:"hello",french:"bonjour"}
;

您不需要额外的{ }。你可以一次声明整个事情:

var dictionaries = {
  english_to_french: {
    english: "hello", french: "bonjour"
  }
};

我建议您的字典的更好格式可能是:

var dictionaries = {
  english_to_french: {
    "hello": "bonjour",
    "chicken": "poulet", // ? something like that
    "Englishman": "rosbif"
  }
};

这样您就可以直接查找单词而无需搜索。然后,您可以从中创建反向字典:

dictionaries.french_to_english = function(dict) {
  var rv = {};
  for (var eword in dict)
    rv[dict[eword]] = eword;
  return rv;
}(dictionaries.english_to_french);

【讨论】:

  • 即使我错误地指定了我想要的东西,你也明白了,你的第三个例子就是我需要的。我希望它有效:)
【解决方案2】:

为了嵌套两个或多个对象,需要为对象分配一个属性。例如,

{
    "hello":{
        "english":"hello",
        "french":"bonjour",
        "portuguese":"ola"
    },
    "good day":{...},
    "how are you":{...}
}
对象开头的

"hello" 将是属性。那么对象就是它的值。这样您就可以通过访问其属性来访问该对象。仅仅将对象放入对象中是行不通的。这就是你得到错误的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    相关资源
    最近更新 更多