英文:
How to make a function outside the loop properly
问题
I've created a collection with collections inside and loop them. And I want to have one function outside the loops to call it in many cycles after it.
在创建了一个包含嵌套集合的集合并对它们进行循环后,我希望在循环之外有一个函数,可以在之后的多个周期中调用它。
In the beginning of the script I declare the variables for function to use,
在脚本的开头,我声明了函数要使用的变量,
(function SplitByPalletsV2() {
let MPkg;
let MQty = 0;
///then I create a map
(在这里我创建一个映射)
let Pkg = new Map();
let PQty = 0;
Pkg.clear();
///... (some code for filling collection)
////then I loop other collection called Waybill and inside this loop the map is filled :
(然后我循环另一个名为Waybill的集合,在这个循环内部填充了映射:)
for (let [key, value] of Waybill) {
///...fill the Pkg map
///somewhere there I call the function to find max of value in this map
(在某个地方,我调用了函数来查找这个映射中的值的最大值)
MaxPackage();
}
function MaxPackage() {
for (let [key6, value6] of Pkg) {
if (Number(value6) > MQty) {
MQty = Number(value6);
MPkg = key6;
}
}
}
})();
And it doesn't work.
但它不起作用。
When I declare map and variables inside the collection and put a function inside the Waybill loop like this, it works:
当我在集合内部声明映射和变量,并像这样将函数放在Waybill循环内部时,它可以工作:
let Pkg = new Map();
let PQty = 0;
Pkg.clear();
//filling the Pkg
(填充Pkg)
let MPkg;
let MQty = 0;
function MaxPackage() {
for (let [key6, value6] of Pkg) {
if (Number(value6) > MQty) {
MQty = Number(value6);
MPkg = key6;
}
}
}
MaxPackage();
Though I write the code in a built-in IDE for OnlyOffice macros, I'm very limited with testing and debug instruments (no instruments at all), I don't understand what happens -seems when I declare global variables it doesn't work.
尽管我在OnlyOffice宏的内置IDE中编写了代码,但在测试和调试工具方面非常有限(几乎没有),我不太明白发生了什么 - 似乎当我声明全局变量时它不起作用。
英文:
I've created a collection with collections inside and loop them. And I want to have one function outside the loops to call it in many cycles after it.
In the beginning of the script I declare the variables for function to use,
(function SplitByPalletsV2() {
let MPkg;
let MQty = 0;
///then I create a map
let Pkg = new Map();
let PQty = 0;
Pkg.clear();
///... (some code for filling collection)
////then I loop other collection called Waybill and inside this loop the map is filled :
for (let [key, value] of Waybill) {
///...fill the Pkg map
///somewhere there I call the function to find max of value in this map
MaxPackage();
}
function MaxPackage() {
for (let [key6, value6] of Pkg) {
if (Number(value6) > MQty) {
MQty = Number(value6);
MPkg = key6;
}
}
}
})();
And it doesn't work.
When I declare map and variables inside the collection and put a function inside the Waybill loop like this, it works:
let Pkg = new Map();
let PQty = 0;
Pkg.clear();
//filling the Pkg
let MPkg;
let MQty = 0;
function MaxPackage() {
for (let [key6, value6] of Pkg) {
if (Number(value6) > MQty) {
MQty = Number(value6);
MPkg = key6;
}
}
}
MaxPackage();
Though I write the code in a built-in IDE for OnlyOffice macros, I'm very limited with testing and debug instruments (no instruments at all), I don't understand what happens -seems when I declare global variables it doesn't work.
答案1
得分: 0
问题解决似乎是我声明了MPkg的方式。
我将MPkg声明为let MPkg;
,但在let MPkg=0;
之后开始工作。
不明白为什么,但就是这样。
英文:
The problem solved seemed in the way I declared MPkg.
I declared MPkg as let MPkg;
but started to work after let MPkg=0;
Don't understand why, but it's so.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论