我尝试使用array.splice()将数据放入数组中的特定位置。这样我就可以从sheet1获取数据到右栏中的主页。
到目前为止看起来如何。
(代码实际上在Logger.log中正确返回)
var header1 = data1[0]; //Header of Sheet1
var header2 = data2[0]; //Header of sheet2
var newData = new Array(44); //There are 45 columns
for (i in data1) {
if (i > 0) { //Take Row by Row Except Header of Sheet1
var row = data1[i];
if (row != "") {
for (j in data2) { //Searching Through All Rows of Sheet2
var row2 = data2[j];
if (row[0] == row2[4]) { //If Data In Column Match That Row, Proceed
//Getting the Right Index of SameName Column
for (i in header2) {
var col = header2[i];
for (j in header1) {
var col2 = header1[j];
if (col == col2) {
Logger.log(j+" "+row2[i]);
newData.splice(j,0,row2[i]);
}
}
}
}
}
}
}
之前正确返回1行:
Logger.log(j +"" + row2 [i]); 42时间戳
3名称
4姓氏 2 DoB
0 ID
。
。
。
1类型
//所有数据都使用正确的索引正确返回(并且没有为空)
以下问题:
Logger.log(newData);
[ID,Type,null,null,DoB,null,....,TimeStamp,null,null]
DoB在Logger.log的前一行中的索引为2,但不知何故,数组在pos2处为null。 另外...... newData.length从44增加到68
不知何故,索引和数据在数组中稍后混淆了。
提前感谢你们所有人。
答案 0 :(得分:0)
如果您记录新实例化的数组,您将看到默认情况下,所有数组元素都被赋值为'null'。在JavaScript中,数组是动态的,这意味着它们的大小不是预先确定的。
假设对于某些行,条件'if(row [0] == row2 [4])'的计算结果为'false',则会跳过某些索引。当然,它会在固定大小的数组中生成null元素。
使用数组文字表示法和Array.prototype.push()方法添加新元素:
void queueDump(FILE *f, Queue *q, void(*dumpfunction)(FILE *f, void *e)) {
fprintf(f, "(%d) -- ", q->size);
for (InternalQueue *c=q->head; c != NULL; c = c->next)
dumpfunction(f, c->value);
}
void printToken(FILE *f, void *e) {
Queue *q;
if (!f) {
printf("Erreur d'ouverture du fichier\n");
exit(1);
}
fprintf(f, "Infix : ");
queueDump(f, q, printToken(f, e));
fclose(f);
}
此外,您不应该使用'for in'循环来迭代数组。使用它正是您没有看到记录“空”值的原因。更多细节Why is using "for...in" with array iteration a bad idea?