[英]Issue with function in for loop breaking the loop
此代码用于扫描工作表中的货币值,并根据列和行标题为 JSON 构建键/值对。 所以本质上,它找到一种货币,然后回溯行号和列号,直到它达到一个非货币、非空白值,并将其与货币一起使用来形成货币对。 我将列出三个功能,第一个只是通过确定值是否为货币来启用第二个,第二个构建 object,第三个迭代工作表并为每个工作表构建 object 符合我的标准。
每张纸都有一个遵循这种模式的名称,“name_name_type_location”,我的标准是任何类型为“AF”的东西。
我遇到的问题是,当我在 publishedSheets() 中运行关税对象(表格 [i])时,它似乎打破了 for 循环,所以我只收到第一张表格 object,即使至少有四个符合我的标准. 我已经通过删除 dutyObject(sheets[i]) 调用进行了测试,它工作正常。 这件事打破了我的循环。
我该如何解决?
function isCurr(x){
var regex = /^[$]\d+(?:\.\d{0,2})$/;
if (regex.test(x)){
return true;
}
else{
return false;
}
}
function tariffObject(sheet){
var data = sheet.getDataRange().getDisplayValues();
var obj = {};
var arr = [];
for (i=0;i<data.length;i++){
for (j=0;j<data[i].length;j++){
if (isCurr(data[i][j])){
//rows
var y = i;
while (isCurr(data[y][j]) || data[y][j].length <= 0){
y = y-1;
}
//columns
var x = j;
while (isCurr(data[i][x]) || data[i][x].length <= 0){
x = x-1;
}
arr.push([data[i][x],data[y][j],data[i][j]]);
}
}
}
for (k=0;k<arr.length;k++){
if (!obj[arr[k][0]]){
obj[arr[k][0]] = {};
}
if (!obj[arr[k][0]][arr[k][1]]){
obj[arr[k][0]][arr[k][1]] = {};
}
obj[arr[k][0]][arr[k][1]] = arr[k][2];
}
return obj;
}
function publishedSheets(){
var ss = SpreadsheetApp.openById(my spreadsheet id),
sheets = ss.getSheets(),
loc = {};
for (i=0;i<sheets.length;i++){
var name = sheets[i].getName(),
spl = name.split("_");
if (spl[2] == "AF"){
loc[spl[3]] = {};
var myObj = tariffObject(sheets[i]);
loc[spl[3]] = myObj;
}
}
Logger.log(loc);
}
尝试这个:
function creatingJson() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet1');
const [hA, ...vs] = sh.getDataRange().getValues();
let jObj = { pA: [] };
vs.forEach((r, i) => {
r.forEach((c, j) => {
if (j == 0) {
jObj[c] = {};
jObj.pA.push(c);
} else {
jObj[vs[i][0]][hA[j]] = c;
}
});
});
Logger.log(JSON.stringify(jObj));
hA.shift();
let s = '';
jObj.pA.forEach((p, i) => {
s += p + "={";
hA.forEach((h, j) => {
if (j > 0) s += ',';
s += h + "=" + jObj[p][h];
});
s+='}\n';
});
Logger.log(s);
}
表 1:
H1 | H2 | H3 | H4 | H5 | H6 | H7 | H8 | H9 | H10 | |
---|---|---|---|---|---|---|---|---|---|---|
R1 | 1 | 11 | 21 | 31 | 41 | 51 | 61 | 71 | 81 | 91 |
R2 | 2 | 12 | 22 | 32 | 42 | 52 | 62 | 72 | 82 | 92 |
R3 | 3 | 13 | 23 | 33 | 43 | 53 | 63 | 73 | 83 | 93 |
R4 | 4 | 14 | 24 | 34 | 44 | 54 | 64 | 74 | 84 | 94 |
R5 | 5 | 15 | 25 | 35 | 45 | 55 | 65 | 75 | 85 | 95 |
R6 | 6 | 16 | 26 | 36 | 46 | 56 | 66 | 76 | 86 | 96 |
R7 | 7 | 17 | 27 | 37 | 47 | 57 | 67 | 77 | 87 | 97 |
R8 | 8 | 18 | 28 | 38 | 48 | 58 | 68 | 78 | 88 | 98 |
R9 | 9 | 19 | 29 | 39 | 49 | 59 | 69 | 79 | 89 | 99 |
R10 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 |
Output:
R1={H1=1,H2=11,H3=21,H4=31,H5=41,H6=51,H7=61,H8=71,H9=81,H10=91}
R2={H1=2,H2=12,H3=22,H4=32,H5=42,H6=52,H7=62,H8=72,H9=82,H10=92}
R3={H1=3,H2=13,H3=23,H4=33,H5=43,H6=53,H7=63,H8=73,H9=83,H10=93}
R4={H1=4,H2=14,H3=24,H4=34,H5=44,H6=54,H7=64,H8=74,H9=84,H10=94}
R5={H1=5,H2=15,H3=25,H4=35,H5=45,H6=55,H7=65,H8=75,H9=85,H10=95}
R6={H1=6,H2=16,H3=26,H4=36,H5=46,H6=56,H7=66,H8=76,H9=86,H10=96}
R7={H1=7,H2=17,H3=27,H4=37,H5=47,H6=57,H7=67,H8=77,H9=87,H10=97}
R8={H1=8,H2=18,H3=28,H4=38,H5=48,H6=58,H7=68,H8=78,H9=88,H10=98}
R9={H1=9,H2=19,H3=29,H4=39,H5=49,H6=59,H7=69,H8=79,H9=89,H10=99}
R10={H1=10,H2=20,H3=30,H4=40,H5=50,H6=60,H7=70,H8=80,H9=90,H10=100}
output 是从此 object 生成的:
{"pA":["R1","R2","R3","R4","R5","R6","R7","R8","R9","R10"],"R1":{"H1":1,"H2":11,"H3":21,"H4":31,"H5":41,"H6":51,"H7":61,"H8":71,"H9":81,"H10":91},"R2":{"H1":2,"H2":12,"H3":22,"H4":32,"H5":42,"H6":52,"H7":62,"H8":72,"H9":82,"H10":92},"R3":{"H1":3,"H2":13,"H3":23,"H4":33,"H5":43,"H6":53,"H7":63,"H8":73,"H9":83,"H10":93},"R4":{"H1":4,"H2":14,"H3":24,"H4":34,"H5":44,"H6":54,"H7":64,"H8":74,"H9":84,"H10":94},"R5":{"H1":5,"H2":15,"H3":25,"H4":35,"H5":45,"H6":55,"H7":65,"H8":75,"H9":85,"H10":95},"R6":{"H1":6,"H2":16,"H3":26,"H4":36,"H5":46,"H6":56,"H7":66,"H8":76,"H9":86,"H10":96},"R7":{"H1":7,"H2":17,"H3":27,"H4":37,"H5":47,"H6":57,"H7":67,"H8":77,"H9":87,"H10":97},"R8":{"H1":8,"H2":18,"H3":28,"H4":38,"H5":48,"H6":58,"H7":68,"H8":78,"H9":88,"H10":98},"R9":{"H1":9,"H2":19,"H3":29,"H4":39,"H5":49,"H6":59,"H7":69,"H8":79,"H9":89,"H10":99},"R10":{"H1":10,"H2":20,"H3":30,"H4":40,"H5":50,"H6":60,"H7":70,"H8":80,"H9":90,"H10":100}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.