[英]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.