在你的函数的第一部分,
function objectsToArray(objects) {
var outPutArray = createArray(objects.length, objects[0].length);
它看起来像我们假定你是objects
已经是一个二维数组。我将假设objects
是一个像这样的对象的一维数组。 [{prop:value...},{...},{...}]
。
现在你想要做的是从这些数据生成2个数字指数。您需要确保2D数组的“第1列”对于所有对象都是相同的属性。
所以你的第一个for循环应该超过属性。此外,保持一个索引,让你知道你在哪个数字属性。
var j = 0;
for (var prop in objects[0]) {
然后你应该对所有对象进行循环。所以想法是,首先你要选择“名称”,然后遍历所有对象,为每个对象添加“名称”字段到二维数组。
for (var i in objects) {
outPutArray[i][j] = objects[i][prop];
}
j++;
}
我认为你看到的主要问题是因为你没有使用数字指数。 (var j in objects[i]
:这将j
定义为一个属性,如“name”,而不是数字索引,就像您期待的那样)。
这正是我的问题,我没有考虑使用单独的计数器并反转for循环。工作得很好,谢谢。 – 2013-03-07 06:00:37
请注意,假设object [1]具有与object [0]相同的属性。如果每个对象都不同,那么我们手上就会有更多的麻烦。 ;-) – 2013-03-07 06:17:00