我有一个类似的对象数组,
var aData = [{"name":"abc","age":12},{"name":"xyz","age":20}];
所有对象都具有相同的属性。现在我必须创建一个类似于
的字符串 名称 年龄
abc 12
xyz 20
我能够通过以下方式实现这一目标,
for(i=0;i<aData.length;i++){
// Loop for printing the heading
if(i==0){
for(key in aData[i]){
outputString += key + "\t";
}
outputString += "\n";
}
//Lopp for printing the values
for(key in aData[i]){
outputString += aData[i].key + "\t";
}
outputString += "\n";
}
上述实现对我来说很好,但我试图找出是否有最佳方法。在我的例子中,数组大小取决于数据库返回的值,这可能是巨大的。我觉得我正在使用额外的循环以及每次迭代都要检查的if条件。
答案 0 :(得分:1)
你可以拉第一个内环
for(key in aData[i]){
outputString += key + "\t";
}
outputString += "\n";
在主循环之外。您必须检查aData的长度是否为零,如果不是,则使用数组中的第一个对象来打印标题。
另一个改进是从主循环外的第一个对象收集所有属性名称(所以你只做一次)并使用这些名称来访问所有对象的属性。
我不确定实际的性能提升,但你可以尝试一下。