是否可以在javascript数组中同时设置唯一索引和值

Sim*_*sen -2 javascript arrays object

我正在尝试制作多维数组,但是我找不到一种同时设置唯一索引和值的方法,例如PHP中的方法。

$Countries = array(
    "America" => array(
         "Delaware" => array(
             "Population" => "967.171 (2018)", "KM2" => "6.446"
         )
    )
);
Run Code Online (Sandbox Code Playgroud)

而且我试图在javascript中做同样的事情,但是无法正常工作。

var Countries = [
    "America" => [
        "Delaware" => [
            "Population" => "967.171 (2018)", "KM2" => "6.446"
        ]
    ]
];
Run Code Online (Sandbox Code Playgroud)

我也曾尝试=>= :和代替->,但它们都不起作用,所以我会死胡同吗?

Tit*_*lum 5

为此,您必须使用object而不是array。这样,您可以通过它们的唯一键来引用它们:

let countries = {
  "America" : {
    "Delaware" : {
      "population" : "967.171 (2018)",
      "KM2" : "6.446",
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

现在,您可以通过以下方式访问属性:

let populationOfDelaware1 = countries.America.Delaware.population;
// OF
let populationOfDelaware2 = countries["America"]["Delaware"]["population"];
Run Code Online (Sandbox Code Playgroud)


T.J*_*der 5

我还尝试将 => 替换为 = : 和 -> 并且它们都不起作用,所以我陷入了死胡同吗?

与 JavaScript 中 PHP 的关联数组最接近的等价物是对象。您使用创建对象{},使用name: value语法指定属性:

var Countries = {
    "America": {
        "Delaware": {
            "Population": "967.171 (2018)",
            "KM2": "6.446"
        }
    }
};
console.log(Countries);
Run Code Online (Sandbox Code Playgroud)

名称可以用引号引起来(如上),或者如果名称是有效标识符,则不带引号。AmericaDelawarePopulationKM2都是有效的 JavaScript 标识符,因此不需要引号,但如果您想要一个属性名称,例如foo bar,由于空格,您需要引号。