繁体   English   中英

需要了解JavaScript数组,对象和属性

[英]Need to understand JavaScript arrays, objects, and properties

首先了解JSON的外观

[
    {"ShortCode":"US","Name":"United States"},
    {"ShortCode":"CA","Name":"Canada"},
    {"ShortCode":"AG","Name":"Antigua and/or Barbuda"}
]

码:

var countries = [];
map = {};

// This is going to make an HTTP post request to the controller
return $.post('/Client/CountryLookup', { query: query }, function (data) {
    // Loop through and push to the array
    $.each(data, function (i, country) {
    map[country.Name] = country;
    countries.push(country.Name);
});

$post()将返回上面的json,我需要在每个循环中解析json,但是我不知道在地图对象中将存储什么内容,此行map[country.Name] = country;

假设国名是“美国”,那么实际上商店将是map['united state']=country是什么意思?

即使在保存代码map{}可以稍后访问

var selectedShortCode = map[item].ShortCode;

地图如何具有ShortCode类的属性?

因此,请详细讨论这种编码技术,并通过几个示例帮助我理解以上代码。 谢谢

您的地图是一个对象文字,在其他语言中也定义为哈希,字典或关系数组,它基本上将键(Strin)与值(任何)相关联,在这种情况下,将国家名称与实际的国家对象相关联,这就是为什么

您的地图[country.Name] =国家操作之后的地图结构将是{“ United States”:{“ ShortCode”:“ US”,“ Name”:“ United States”},“ Canada”:{“ ShortCode”: “ CA”,“名称”:“加拿大”},“安提瓜和/或巴布达”:{“ ShortCode”:“ AG”,“名称”:“安提瓜和/或巴布达”}}

然后当你做

map["United States"]

你得到

{“ ShortCode”:“ US”,“ Name”:“ United States”}

$.post调用后的data为:

data = 
[
    { ShortCode: "US", Name: "United States" },
    { ShortCode: "CA", Name: "Canada" },
    { ShortCode: "AG", Name: "Antigua and/or Barbuda" }
];

看一下jQuery的.each函数文档

它基本上可以重写如下:

for(var i in data)
{
    var country = data[i];
    map[country.Name] = country;
    countries.push(country.Name);
}

因此,您最终得到:

map =
{
    "United States": { ShortCode: "US", Name: "United States" },
    "Canada": { ShortCode: "CA", Name: "Canada" },
    "Antigua and/or Barbuda": { ShortCode: "AG", Name: "Antigua and/or Barbuda" }
};

countries = [ "United States", "Canada", "Antigua and/or Barbuda" ];

因此,您的代码将解析json,并在两个不同的对象中输出存在的所有国家( countries )和与之相关的所有数据( map )。 可以使用countries轻松地在map ,但实际上并不需要。

编辑:

var country = data[0];
// country = { ShortCode: "US", Name: "United States" };
map[country.Name] = country;
// map["United States"] = { ShortCode: "US", Name: "United States" };

因此,您以后可以使用map["United States"] ,它将返回一个对象{ ShortCode: "US", Name: "United States" } ,然后您可以根据需要直接访问其属性ShortCode

请注意,JavaScript中的所有变量都是通过引用传递的,并且myObject["someProperty"]myObject.someProperty完全相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM