在我的脚本中,函数使用teststim数组中的值。
var teststim = ["A", "B", "C"]
我想提供'属性'对于这些值,例如A具有属性" name",B" birthday",...
我需要找到一种方法来访问这些属性。我想到了这样的事情:
var teststim = {content: "A", attribute: "name"},
{content: "B", attribute: "birthday"},
{content: "C", attribute: "whatever"}
也许我比我想的更接近,但我无法访问'属性'对应于内容值的值。我错过了什么?
答案 0 :(得分:2)
您需要一组对象:
var teststim = [{content: "A", attribute: "name"},
{content: "B", attribute: "birthday"},
{content: "C", attribute: "whatever"}];
for (var i=0; i<teststim.length; i++) {
var obj = teststim[i];
if (obj.content=='C') {
alert(obj.attribute); // "whatever"
};
};
答案 1 :(得分:1)
您无法为您的数组的值提供属性/属性。 因此,您必须从:
开始var arr = [
{content:'A'},
{content:'B'},
{content:'C'}
];
现在您可以添加新属性,例如:
arr[0].attribute = '2';
答案 2 :(得分:0)
如果要将数组中的值映射到另一个(更长?)值,可以使用:
var mapping = {"A" : "name",
"B" : "birthday",
"C" : "whatever"}
for(var i = 0, len = teststim.length; i < len; i++)
{
alert(mapping[teststim[i]]);
}
如果没有,那么只需要一个对象数组:
var teststim = [{ 'content' : "A", 'attribute' : "name" },
{ 'content' : "B", 'attribute' : "birthday" },
{ 'content' : "C", 'attribute' : "whatever" }];
for(var i = 0, len = teststim.length; i < len; i++)
{
alert(teststim[i].attribute);
}