bog*_*dan 24 javascript associative-array
我正在尝试创建一个关联数组,创建一个空数组,然后添加一个(indexName
- >值)对:
var arrayName = new Array;
arrayName["indexName"] = value;
// i know i can also do the last line like this:
arrayName.indexName = value;
Run Code Online (Sandbox Code Playgroud)
当我将值分配给indexName
我想要indexName
动态和变量的值时.所以我尝试了这个:
arrayName[eval("nume")] = value;
Run Code Online (Sandbox Code Playgroud)
哪里:
var var1 = "index";
var var2 = "Name";
var nume = '"' + var1 + var2 + '"';
Run Code Online (Sandbox Code Playgroud)
但是:alert(arrayName["indexName"]);
没有返回"价值"......它说"未定义"
有什么我想念的吗?(我不熟悉eval()
); 如果我正在尝试的方式是死路一条,还有另一种方法可以使关联数组值的索引名称动态化吗?
CMS*_*CMS 22
起初我认为你不需要一个真正的数组对象来做你需要的东西,你可以使用一个普通的对象.
您可以使用括号表示法使用变量的值来访问属性:
var obj = {};
var nume = var1 + var2;
obj[nume] = value;
Run Code Online (Sandbox Code Playgroud)
数组只是对象,"关联数组"的概念可以通过使用简单对象来实现,对象是包含值的属性的集合.
当您需要存储数字索引时,真实数组非常有用,它们会length
在您分配索引或为其指定push
值时自动更新其属性.
使用 arrayName[var1+var2]
请注意,arrayName.var
是一样的arrayName["var"]
-它只是语法糖.第二种形式主要用于处理您所面临的问题 - 动态对象键和不是字母数字的键(想想arrayName[".eval()"]
;这是一个完全合法的对象键,与javascript eval()
函数无关)
你会使用对象来做到这一点:
var hash = {}
hash["foo"] = "foo";
hash.bar = "bar";
// This is the dynamic approach: Your key is a string:
baz = "baz"
hash[baz] = "hello";
Run Code Online (Sandbox Code Playgroud)
要迭代,只需使用for
循环或$.each()
jQuery.
归档时间: |
|
查看次数: |
73450 次 |
最近记录: |