我有一个多维数组。特别是2D。第一个数组是我要存储的页码。第二个数组是页面的图层名称。我的问题是我在每个页码之前创建一个标题。我试图遍历并打印标题,然后是第一页,然后是第一组图层。然后是第二个标题,第二个页面,然后是第二组图层。我的代码是打印标题,然后打印所有页面和层。
我尝试遍历数组,但是不确定我需要在哪里放置嵌套循环。我一直在尝试for循环和print语句的不同放置。我得到的最接近的是标题,并且所有下面的层都打印在标题下。
var theCount = 0;
for (var z = 0; z < isolatedPages.length; z++) {
if (theCount != isolatedPages.length) {
theCount++;
console.println("header bookmark loop V" + theCount);
for (var i = 0; i < hypertextArray.length; i++) {
var layerNamesArray = hypertextArray[i];
for (var x = 0; x < layerNamesArray.length; x++) {
if (layerNamesArray.length > 1) {
console.println("layerNamesArray[" + i + "][" + x + "] = " + layerNamesArray[x]);
}
}
}
}
}
这是控制台中当前代码的输出:
header bookmark loop V1
layerNamesArray[1][0] = V1 - 347 (Dk Green)
layerNamesArray[1][1] = V1 - 346 (Med Green)
layerNamesArray[1][2] = V1 - 258 (Dk Purple)
layerNamesArray[3][0] = V2 - 346 (Med Green)
layerNamesArray[3][1] = V2 - 258 (Dk Purple)
layerNamesArray[3][2] = V2 - 190 (Dk Pink)
layerNamesArray[3][3] = V2 - 021 (Orange)
layerNamesArray[3][4] = V2 - 305 (Lt Blue)
header bookmark loop V2
layerNamesArray[1][0] = V1 - 347 (Dk Green)
layerNamesArray[1][1] = V1 - 346 (Med Green)
layerNamesArray[1][2] = V1 - 258 (Dk Purple)
layerNamesArray[3][0] = V2 - 346 (Med Green)
layerNamesArray[3][1] = V2 - 258 (Dk Purple)
layerNamesArray[3][2] = V2 - 190 (Dk Pink)
layerNamesArray[3][3] = V2 - 021 (Orange)
layerNamesArray[3][4] = V2 - 305 (Lt Blue)
这就是我想要的:
header bookmark loop V1
layerNamesArray[1][0] = V1 - 347 (Dk Green)
layerNamesArray[1][1] = V1 - 346 (Med Green)
layerNamesArray[1][2] = V1 - 258 (Dk Purple)
header bookmark loop V2
layerNamesArray[3][0] = V2 - 346 (Med Green)
layerNamesArray[3][1] = V2 - 258 (Dk Purple)
layerNamesArray[3][2] = V2 - 190 (Dk Pink)
layerNamesArray[3][3] = V2 - 021 (Orange)
layerNamesArray[3][4] = V2 - 305 (Lt Blue)
答案 0 :(得分:0)
尝试一下:
for (var i = 0; i < hypertextArray.length; i++) {
console.log("header bookmark loop V" + i);
var layerNamesArray = hypertextArray[i];
for (var x = 0; x < layerNamesArray.length; x++) {
if (layerNamesArray.length > 1) {
console.println("layerNamesArray[" + i + "][" + x + "] = " + layerNamesArray[x]);
}
}
}
并删除外部第一个循环。
答案 1 :(得分:0)
不应存在外部循环。
相反,在hyperTextArray
的循环内打印标题。
还要使循环计数器以两个为单位递增,因为显然您将页码存储在偶数索引中,并将层数组存储在奇数索引中。
内部if
是无用的,因为for
仅在该if
条件为真时才会迭代。
您输出文本“ layerNamesArray [] []”,但实际上应该是“ hypertextArray [] []”以保持一致。
因此,更正后的代码将是:
for (var i = 0; i < hypertextArray.length; i+=2) {
console.println("header bookmark loop V" + hypertextArray[i]);
var layerNamesArray = hypertextArray[i+1];
for (var x = 0; x < layerNamesArray.length; x++) {
console.println("hypertextArray["+i+"]["+x+"] = "+layerNamesArray[x]);
}
}
在更现代的编码(如果您使用的平台上受支持)中,它将是:
for (let i = 0; i < hypertextArray.length; i+=2) {
console.println(`header bookmark loop V${hypertextArray[i]}`);
for (const layer of hypertextArray[i+1]) {
console.println(`hypertextArray[${i}][${x}] = ${layer}`);
}
}
或者,您可以一个一个地循环,并检测该项目是否为数组:
for (const hypertextElem of hypertextArray) {
if (Array.isArray(hypertextElem)) {
for (const layer of hypertextElem) {
console.println(`hypertextArray[${i}][${x}] = ${layer}`);
}
} else {
console.println(`header bookmark loop V${hypertextElem}`);
}
}