如何遍历列并更新变量

时间:2014-02-13 23:32:46

标签: javascript arrays

我挠了头,正朝着正确的方向寻找指针 我有一个包含多行的Google电子表格。行添加,脚本只查看最新的行。

没有正式的计算机课程我只是在挑选,尽管可能是效率最低的方式。

我有一系列变量由单元格的值Data1,Data2等填充,直到行完成为止,列数。它只是一行,我不想处理任何超过1行。

目前,我已编码依次查看每一个:

var Data1 = sh.getRange(row,1).getValues()[0];
var Data2 = sh.getRange(row,2).getValues()[0];
var Data3 = sh.getRange(row,3).getValues()[0];
var Data4 = sh.getRange(row,4).getValues()[0];

依旧......

这和充满鱼的水壶一样高效,所以看着数组(如果这是解决方案)循环遍历行,单行,并返回一个我稍后可以在某些html中调用的数组,即..

<td width="443" bgcolor="#FFFFFF" colspan="3">' + Data1 + '</td><td width="245" b....

有人可以向我推荐一些例子,我可以完全理解数组可以提供哪些帮助,大多数示例似乎都是指二维数组但不解释如何调用这些值...

欢迎任何帮助......

Ĵ

2 个答案:

答案 0 :(得分:0)

Javascript中的数组(以及其他语言中的数组)是一个列表,无论是单词(字符串),数字(int,float)还是其他数组

它有点像一个有序的盒子,你把东西一个接一个地放在那里。

数组中的每个项都有一个“索引”,我们从0开始计数。

所以数组:

var friut = ["apple", "banana", "orange"];

有三个项目,索引为0,1和&amp; 2

通过调用索引,我们可以从数组中获取项目。

console.log( friut[0] ); //prints out "apple"

console.log( fruit[1] ); //prints out "banana"

console.log( friut[2] ); //prints out "orange"

数组的另一个属性是“length”,这样就可以判断数组中有多少项。

console.log(friut.length()); //prints out 3, because there are three items in the array

如此了解数组的长度,我们可以使用循环来调出数组中的每个项目

/* 
while "count" is less than the length of the array "fruit", perform an operation
and each time add 1 to count (thats the ++count part)
so when "count" reaches the same number as fruit.length(), stop
*/
for(var count = 0; count < friut.length(); ++count)
{
    console.log( friut[count] );
}

通过这种方式,您可以使用一些在屏幕上绘制对象的脚本替换“console.log()”。

记住,要从数组中获取元素,您需要调用它的索引,这只是列表中的数字。

我希望这有助于理解。

至于将数据放入数组中,首先需要创建一个数组,然后使用“push”命令将数据设置为数组。

var dataArray = [];
dataArray.push( sh.getRange(row,1).getValues()[0] );
dataArray.push( sh.getRange(row,2).getValues()[0] );
dataArray.push( sh.getRange(row,3).getValues()[0] );
dataArray.push( sh.getRange(row,4).getValues()[0] );

然后你可以这样做:

for(var count = 0; count < dataArray.length(); ++count)
{
    document.write("<td width=\"443\" bgcolor=\"#FFFFFF\" colspan=\"3\">" + dataArray[count] + "</td><td width=\"245\" b....");
}

干杯!

...这里有一个链接来帮助解决数组的细节...

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

答案 1 :(得分:0)

您还提到了2D阵列。

这只是一个数组数组。

让我们回到水果,假设我们有三个阵列

var apples = ["gala", "washington", "fuji"];
var bananas = ["cavendish", "plantain", "lady finger"]
var oranges = ["valencia", "navel", "blood"];

并且假设我们将这三个列表放在另一个列表中

var fruit = [apples, bananas, oranges];

所以,现在“水果”是三个清单的清单。或者在Javascript中, “fruit”是一个包含三个数组的数组,或者fruit是一个2D数组。

为何选择2D?好吧,如果我们把它画出来,我们可以看到它在2维中列出

fruit = 
---------------------------------------------
| "gala"       | "cavendish"   | "valencia" | 
| "washington" | "plantain"    | "navel"    | 
| "fuji"       | "lady finger" | "blood"    |
---------------------------------------------  

每个条目几乎可以被认为是X,Y cooridnate平面上的点(我完全会为这个陈述感到悲伤,但它对于一个基本的例子来说已经足够了)。

"gala" is at (0,0)
"plaintain" is at (1,1)
"blood" is at (2,2)

记住我们开始计数为0的索引! 低,看哪!如果我们在数组果实上使用这个约定,我们就可以从数组中得到一个水果

console.log( fruit[0][0] ); //prints gala
console.log( fruit[1][1] ); //prints plantain
console.log( fruit[2][2] ); //prints blood

console.log( fruit[0][2] ); //prints fuji
console.log( fruit[2][0] ); //prints valencia

好的,如果你的所有阵列都是相同的大小(长度),那么这很有用,但是如果它们不是那么你就会遇到问题。看看

fruit = 
---------------------------------------------
| "gala"       | "cavendish"   | "valencia" | 
| "washington" | "lady finger" | "navel"    | 
| "fuji"       |               | "blood"    |
---------------------------------------------  

如果我试图打印“女士手指”的旧地址,那么“普通人”就不见了。

console.log( fruit[1][2] ); //no way! error town!

Javascript会抱怨。随着“普通人”走了,“女士手指”有了新的指数。在您知道要查找的内容之前,这些类型的东西会让您感到困惑。

有点长但我希望它有所帮助。