gpt4 book ai didi

javascript - 以编程方式声明基于索引数组的变量(使用谷歌站点列表页面)

转载 作者:行者123 更新时间:2023-12-03 11:12:44 25 4
gpt4 key购买 nike

假设我有一个类似 excel 的网格,由两部分组成。

一列和一个列表。

列是列,列表是所有行的整个集合。我可以获得带有 .length 的列列表,列表上的 .length 给出了行数。

所以我现在有了我的 x 和我的 y。

我想从中创建一个对象,其工作原理如下:

var = ObjList {

row0 = [],
row1 = [],
row2 = [],
column = [],
};

问题是列表的长度可以修改。我认为解决此问题的唯一方法是以编程方式创建变量。像这样(伪代码)

  //Variables
var itemName

//Get Column Names
for (var j in columns) { //columns is an object/array
var cName =columns[j].getName(); //I have to get the name otherwise cName just returns as ListItem
columnList.push(cName); //Push cName to my own array so I have an array of strings
}
for (var i in listItems) { //Again working with an object array
item = listItems[i] //Creating an easier reference variable
for (var j = 0; j < columnList.length - 1;j++){ //now I have to use the length of the Column array to find out how wide our list is
itemName = item.getValueByName(columnList[j]); //turning the listitem into a string
row(i).push(itemName); //the is the programmatic variable.
}
}

问题是我不确定在哪里声明变量。是否有其他方法可以循环遍历 List 数组并将 listItems 数组的每个索引与我在这里使用 getValueByName(columnList[j]) 执行的列的索引相匹配。

********************************编辑**************** **************

有人要求提供一个示例,我可以看到这会多么令人困惑。这是专门针对 Google 网站的。

我也在上面的代码中添加了注释。

我们有一个网格。这个网格实际上是两部分。该列是一个对象,这就是我创建另一个数组并将名称放入数组中的原因。该列表是另一个对象。 ( LI = 行项目 )

 |Col1|Col2|Col3|Col4|<~~~ Column Object 
|LI |LI |LI |LI |<~~~~~~~~~~~~~~~~~~~|
|LI |LI |LI |LI |<~~~~~~~~~~~~~~~~~~~| List Object
|LI |LI |LI |LI |<~~~~~~~~~~~~~~~~~~~|

我想要的是能够迭代循环并将每一行分解为自己的数组。

我已经能够一次成功地做到这一点。但由于我希望每行有一个数组,并且行数是动态的(因为用户可以添加更多行),所以我很困惑如何解释这一点。

我希望整个网格作为一个对象存在,其行属性和列属性都是数组。所以 row0 将是 row0[LI1,LI2,LI3,LI4]

 Columns[]~~>|Col1|Col2|Col3|Col4|  ~~~~~~~|
row0[]~~~~~>|LI1 |LI2 |LI3 |LI4 | ~~~~~~~|
row1[]~~~~~>|LI1 |LI2 |LI3 |LI4 | ~~~~~~~|ObjList
row2[]~~~~~>|LI1 |LI2 |LI3 |LI4 | ~~~~~~~|

网格的宽度是

Column.length 

行数可以通过定义

itemList.length 

所以我想问题是我可以有一个数组数组吗?

所以我可以

 //Variables
var itemName;
var masterArray = [];
var midArray = [];
//Get Column Names
for (var j in columns) {
var cName =columns[j].getName();
columnList.push(cName);
}
for (var i in listItems) {
item = listItems[i]
for (var j = 0; j < columnList.length - 1;j++){
itemName = item.getValueByName(columnList[j]);
midArray.push(itemName);
if (midArray > columnLisst.length -1) {
masterArray.push(midArray);
midArray.length = 0;
}
}
}

虽然感觉笨拙且错误。

最佳答案

是的,您可以在 JavaScript 中拥有一个二维数组。现在你拥有的是一个具有另一个级别的对象,它是一个数组,因此,就维度而言,实际上没有任何区别。无论是一个对象带有数组,还是一个对象带有其他对象,或者是一个数组带有其他数组;在所有情况下你都有第二个级别。

唯一的问题确实是;您是否希望能够通过名称而不是索引来访问值?如果您想通过名称访问值,请使用对象。您是否考虑过在对象中包含对象?

我没有看到您以编程方式声明变量。也许对术语有误解。

在这种情况下,有第二层数据,嵌套FOR是正常的。循环,所以即使它更复杂,我也不认为它会被认为是笨拙或错误的。

您需要运行代码并查看结果以确定什么对您有用。您可以使用Logger.log("some text: " + aVariableName);语句将信息打印到 LOG,然后查看LOG。另外,请查看执行脚本

您还可以逐行单步执行代码行并查看结果。

如果您遇到无法解决的特定问题,请提供错误消息以及哪一行代码产生错误消息。

关于javascript - 以编程方式声明基于索引数组的变量(使用谷歌站点列表页面),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27495849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com