我有一个创建键值对的循环;其中一个语句做我想要的是在循环期间创建多个对。我很困惑为什么其他声明不起作用。有效的代码:
chart[2][ITEMNAME] = new Array("Gonzo", "Kermit", "Piggy", "Rowlf", "Big Bird", "Elmo");
var hashmap=[];////Create hashmap and dump array values
for (var each in chart){
hashmap[each]={};
for (var eachITEM in chart[each][ITEMNAME]){
hashmap[each][chart[each][ITEMNAME][eachITEM]] = chart[each][DATA][eachITEM];
}
}
不起作用的代码 - 我所做的只是用另一个字符串替换[chart [each] [ITEMNAME] [eachITEM]]。我注意到的行为是它将所有值替换为最后一个元素,而不是将对添加到对象。
chart[2][ITEMNAME] = new Array("Gonzo", "Kermit", "Piggy", "Rowlf", "Big Bird", "Elmo");
var hashmap=[];////Create hashmap and dump array values
for (var each in chart){
hashmap[each]={};
for (var eachITEM in chart[each][ITEMNAME]){
hashmap[each]["name"] = chart[each][DATA][eachITEM];
// hashmap[each][chart[each][ITEMNAME][eachITEM]] = chart[each][DATA][eachITEM];
}
}
这是我的完整对象数组中的一个对象:
var chart = new Array();
chart[0] = new Array();
chart[0][LEGEND] = "Widget Production";
chart[0][ITEMNAME] = new Array("Big Widgets", "Little Widgets", "Medium Widgets", "Microwidgets");
chart[0][DATA] = new Array(30,50,100,25);
chart[0][COLORS] = new Array("lightblue","orange","red","lightgreen");
我要做的是在ITEMENAME中对元素进行alphebetize,同时保持数组与DATA&颜色。